python编程基础:快速微服务框架指南:flask:1: 简介与Hello World
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相关推荐
- 零基础搭建微服务框架/Spring Boot + Dubbo + Docker + Jenkins
本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...
- Golang 编程 — Go Micro 微服务框架
目录 文章目录 目录 Go Micro Go Micro Go Micro 是一个可插拔的 RPC 框架,提供了以下功能: 服务发现:程序自动注册到服务发现系统. 负载均衡:它提供了客户端负载均衡. ...
- python 微服务框架_Python微服务框架NameKo 性能体验
Nameko是Python下的一个微服务框架,小巧简洁,通过RabbitMq消息组件来实现RPC服务 Github:NameKo 一.准备工作 1.RabbitMq 使用docker安装 docker ...
- Python 微服务框架
基于Python开发的简单微服务框架,用于软件自动化测试工程的搭建. 一.注册中心 eqlink 二.微服务框架 eqsmart
- 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦
秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...
- Seneca :NodeJS 微服务框架入门指南
Seneca :NodeJS 微服务框架入门指南 原文:http://onmr.com/press/getting-started-seneca.html Seneca 是一个能让您快速构建基于消息的 ...
- Go微服务框架及基础平台选择
Go微服务框架及基础平台选择 1 考虑因素 2 现有Go微服务框架 2.1 istio 2.1.1 Istio 特点 2.2 Go-kit 2.2.1 暂未找到 2.3 Kratos(奎托斯) 2.3 ...
- python 微服务框架 知乎_今日头条Go建千亿级微服务的实践
原标题:今日头条Go建千亿级微服务的实践 原文作者:字节跳动技术团队 来源:知乎 小编有话说:如何寻找优质的学习资源是是否能够自学成功的前提要素,知乎作为一个流量比较大的问题和知识分享社区,在gola ...
- 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)
2019独角兽企业重金招聘Python工程师标准>>> 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你 ...
最新文章
- ORACLE 配置文件
- android将引入aot编译器,Android N混合使用AOT编译,解释和JIT三种运行时
- 一.redis 环境搭建
- 蓝桥杯基础模块3_1:数码管静态显示
- 简单的线性模型实现tensorflow权重的生成和调用,并且用类的方式实现参数共享
- Jenkins报错Error fetching remote repo 'origin'真正解决办法
- 随笔-jsp 利用jstl标签分页
- 安装saltstack遇到的问题锦集
- 蓝桥杯 2014本科C++ B组 李白打酒 三种实现方法 枚举/递归
- html文本框连接数据库失败,从按钮点击将数据从MySQL数据库加载到HTML文本框
- 框架基础---动态代理
- Turtlebot2激光雷达(Rplidar)gmapping构建地图
- wordpress建站我们如何选择虚拟主机和VPS服务器呢?
- novipnoad电影网站分析
- 第三方支付机构有哪些?他们的资金是如何运作保障用户的资金安全的?
- 云原生周报 | K8s 官方推出纪录片;BFE 2021开源总结;服务网格在联通的落地实践
- java网课|包装类
- 仿新浪抢工长装修招标网站源码老工长装修网源码装修网站源码
- 低配版点燃我温暖你爱心代码
- Unity导入图片报错File could not be read