333 字
2 分钟
快速搭建Flask应用
介绍了 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