333 字
2 分钟
快速搭建Flask应用
2017-12-17

介绍了 Flask 最简单的单文件应用及部署

什么是 Flask#

  • Flask 是 Python 的一个轻量级 Web 应用框架
  • 它依赖于两个库( Werkzeug 和 Jinja 2)

开始#

  • 这是一个最小的 Flask 应用,只有一个文件几行代码
# manage.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask
app = 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:app
directory=/${PROJDIR}
user = nobody
autostart=true
autorestart=true
redirect_stderr=true
stderr_logfile=/${PROJDIR}/error.log
stdout_logfile=/${PROJDIR}/access.log

参考文献#

快速搭建Flask应用
https://www.waterwater.moe/posts/2017/2017-12-17_快速搭建flask应用/
作者
whitewater
发布于
2017-12-17
许可协议
CC BY-NC-SA 4.0