333 字
2 分钟
快速搭建Flask应用
介绍了 Flask 最简单的单文件应用及部署
什么是 Flask
- Flask 是 Python 的一个轻量级 Web 应用框架
- 它依赖于两个库( Werkzeug 和 Jinja 2)
开始
- 这是一个最小的 Flask 应用,只有一个文件几行代码
#!/usr/bin/python# -*- coding:utf-8 -*-from flask import Flaskapp = Flask(__name__)
@app.route('/') # 路由装饰器def hello_world(): return 'Hello World!'
if __name__ == '__main__': app.run(host='127.0.0.1', port=5000, debug=True)运行
- 在安装 Python 及 flask 依赖后尝试运行 python manage.py 即可运行代码
- 之后尝试打开浏览器或使用命令
curl localhost:5000检查代码是否正常运行 - 成功后就可以对这个应用进行自由扩展了
部署
- 使用
app.run()的方式运行只适用于开发环境,因为 Flask 自带的服务器是单线程的,不适用生产环境 - 我选择了 Gunicorn 配合 gevent(提供协程支持) 运行应用
# 运行 gunicorn 服务器 使用 gevent 8进程gunicorn --bind 127.0.0.1:5000 --workers 8 --worker-class gevent manage:app- nginx (可选) 使用 nginx 转发端口、负载均衡
server { listen 80; # 监听80端口 # 端口转发 location / { proxy_pass http://127.0.0.1:5000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }- 使用 supervisor 管理(可选)
supervisorctl start ${PROJNAME}
# /etc/supervisor/conf.d/${PROJNAME}.conf[program:${PROJNAME}]command=gunicorn -k gevent -w 8 -b 0.0.0.0:5888 run:appdirectory=/${PROJDIR}user = nobodyautostart=trueautorestart=trueredirect_stderr=truestderr_logfile=/${PROJDIR}/error.logstdout_logfile=/${PROJDIR}/access.log