flask是一个纯python实现的开源microframework,使用flask可以像java的spring boot一样快速开始基于RestApi的微服务开发。

概要信息

项目 说明
官方网站 https://www.palletsprojects.com/p/flask/
开源/闭源 开源
License类别 BSD License
代码管理地址 https://github.com/pallets/flask
开发语言 Python
支持平台 鉴于python的跨平台特性,可运行于等多种操作系统
当前版本 1.0.2 (2018/05/02)

事前准备

python和pip

[root@liumiaocn ~]# python --version
Python 2.7.5
[root@liumiaocn ~]# pip --version
pip 10.0.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
[root@liumiaocn ~]#

安装flask

[root@liumiaocn ~]# pip install flask
Collecting flaskDownloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)100% |################################| 92kB 92kB/s
Collecting Jinja2>=2.10 (from flask)Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)100% |################################| 133kB 210kB/s
Collecting itsdangerous>=0.24 (from flask)Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)100% |################################| 51kB 469kB/s
Requirement already satisfied: Werkzeug>=0.14 in /usr/lib64/python2.7/site-packages (from flask) (0.14.1)
Collecting click>=5.1 (from flask)Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)100% |################################| 71kB 229kB/s
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)Downloading https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
Building wheels for collected packages: itsdangerous, MarkupSafeRunning setup.py bdist_wheel for itsdangerous ... doneStored in directory: /root/.cache/pip/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5Running setup.py bdist_wheel for MarkupSafe ... doneStored in directory: /root/.cache/pip/wheels/33/56/20/ebe49a5c612fffe1c5a632146b16596f9e64676768661e4e46
Successfully built itsdangerous MarkupSafe
Installing collected packages: MarkupSafe, Jinja2, itsdangerous, click, flask
Successfully installed Jinja2-2.10 MarkupSafe-1.0 click-6.7 flask-1.0.2 itsdangerous-0.24
[root@liumiaocn ~]

安装确认

[root@liumiaocn ~]# pip show flask
Name: Flask
Version: 1.0.2
Summary: A simple framework for building complex web applications.
Home-page: https://www.palletsprojects.com/p/flask/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: /usr/lib64/python2.7/site-packages
Requires: Jinja2, itsdangerous, Werkzeug, click
Required-by:
[root@liumiaocn ~]#

flask安装之后,也可以用如下方法进行确认

[root@liumiaocn ~]# which flask
/usr/bin/flask
[root@liumiaocn ~]# flask --version
Flask 1.0.2
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
[root@liumiaocn ~]#

第一个HelloWorld

代码示例

[root@liumiaocn ~]# cat hello_flask.py
from flask import Flask
app = Flask(__name__)@app.route("/")
def hello():return "Hello World!"
[root@liumiaocn ~]#

执行&确认

[root@liumiaocn ~]# FLASK_APP=hello_flask.py flask run* Serving Flask app "hello_flask.py"* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

通过curl进行结果确认:

[root@liumiaocn ~]# curl http://localhost:5000
Hello World![root@liumiaocn ~]#

代码示例

另外也可以通过使用app.run方法启动服务:

[root@liumiaocn ~]# cat hello_flask_2.py
from flask import Flask
app = Flask(__name__)@app.route("/")
def hello():return "Hello World!"if __name__ == "__main__":app.run()
[root@liumiaocn ~]#

执行&确认

[root@liumiaocn ~]# python hello_flask_2.py * Serving Flask app "hello_flask_2" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

通过curl进行结果确认:

[root@liumiaocn ~]# curl http://localhost:5000
Hello World![root@liumiaocn ~]#

外部可访问的设定方法

可以通过如下方式进行设定可从网络的其他机器对此服务进行访问:

app.run(host='0.0.0.0')

设定端口号

缺省使用5000端口进行监听,如果需要修改,可以使用如下方式:

app.run(port=6000)

设定debug模式

可以使用如下方式打开Debug模式

app.debug = True
app.run()

或者

app.run(debug=True)

总结

对spring boot了解的开发者可能会发现这里基本和spring的requestmapping几乎如出一辙,至少在restapi的实现上有相似之处。设定和实现起来非常地方便,这就是flask用于web开发入门的简单之处。

python编程基础:快速微服务框架指南:flask:1: 简介与Hello World相关推荐

  1. 零基础搭建微服务框架/Spring Boot + Dubbo + Docker + Jenkins

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

  2. Golang 编程 — Go Micro 微服务框架

    目录 文章目录 目录 Go Micro Go Micro Go Micro 是一个可插拔的 RPC 框架,提供了以下功能: 服务发现:程序自动注册到服务发现系统. 负载均衡:它提供了客户端负载均衡. ...

  3. python 微服务框架_Python微服务框架NameKo 性能体验

    Nameko是Python下的一个微服务框架,小巧简洁,通过RabbitMq消息组件来实现RPC服务 Github:NameKo 一.准备工作 1.RabbitMq 使用docker安装 docker ...

  4. Python 微服务框架

    基于Python开发的简单微服务框架,用于软件自动化测试工程的搭建. 一.注册中心 eqlink 二.微服务框架 eqsmart

  5. 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦

    秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...

  6. Seneca :NodeJS 微服务框架入门指南

    Seneca :NodeJS 微服务框架入门指南 原文:http://onmr.com/press/getting-started-seneca.html Seneca 是一个能让您快速构建基于消息的 ...

  7. Go微服务框架及基础平台选择

    Go微服务框架及基础平台选择 1 考虑因素 2 现有Go微服务框架 2.1 istio 2.1.1 Istio 特点 2.2 Go-kit 2.2.1 暂未找到 2.3 Kratos(奎托斯) 2.3 ...

  8. python 微服务框架 知乎_今日头条Go建千亿级微服务的实践

    原标题:今日头条Go建千亿级微服务的实践 原文作者:字节跳动技术团队 来源:知乎 小编有话说:如何寻找优质的学习资源是是否能够自学成功的前提要素,知乎作为一个流量比较大的问题和知识分享社区,在gola ...

  9. 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)

    2019独角兽企业重金招聘Python工程师标准>>> 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你 ...

最新文章

  1. ORACLE 配置文件
  2. android将引入aot编译器,Android N混合使用AOT编译,解释和JIT三种运行时
  3. 一.redis 环境搭建
  4. 蓝桥杯基础模块3_1:数码管静态显示
  5. 简单的线性模型实现tensorflow权重的生成和调用,并且用类的方式实现参数共享
  6. Jenkins报错Error fetching remote repo 'origin'真正解决办法
  7. 随笔-jsp 利用jstl标签分页
  8. 安装saltstack遇到的问题锦集
  9. 蓝桥杯 2014本科C++ B组 李白打酒 三种实现方法 枚举/递归
  10. html文本框连接数据库失败,从按钮点击将数据从MySQL数据库加载到HTML文本框
  11. 框架基础---动态代理
  12. Turtlebot2激光雷达(Rplidar)gmapping构建地图
  13. wordpress建站我们如何选择虚拟主机和VPS服务器呢?
  14. novipnoad电影网站分析
  15. 第三方支付机构有哪些?他们的资金是如何运作保障用户的资金安全的?
  16. 云原生周报 | K8s 官方推出纪录片;BFE 2021开源总结;服务网格在联通的落地实践
  17. java网课|包装类
  18. 仿新浪抢工长装修招标网站源码老工长装修网源码装修网站源码
  19. 低配版点燃我温暖你爱心代码
  20. Unity导入图片报错File could not be read

热门文章

  1. html2canvas给指定区域添加满屏水印
  2. 华为小熊派开发记录STM32+MPU6050+WIFI8266
  3. LeNet论文的翻译与CNN三大核心思想的解读
  4. 求最大公约数,最小公倍数算法
  5. Java从不同目录获取文件方式
  6. 个性化营销:您需要知道的信息
  7. 20222022加氢工艺考试题库及模拟考试加氢工艺考试题库及模拟考试
  8. 人工智能的中国式崛起
  9. 虚拟数字人成短视频/直播主阵地,虚拟人提升数字内容生产效率
  10. 2021年初级会计职称考试《初级会计实务》真题