Python使用uwsgi部署Flask应用
前言
众所周知,flask应用写好了之后可以直接跑。但是,but,有一个非常重要且不可忽视,一旦忽视就会出现十分严重后果的问题,那么,到底是什么问题呢。
虽然确实flask app可以不通过代理而直接使用app.run(host="0.0.0.0")
直接在生产环境运行。但是不知道小伙伴们是否注意到,在通过该方法运行之后日志终端会输出一条warning警告,告诉我们不建议通过该方法直接在生产环境部署应用。这是因为app.run
方法是使用flask内置的wsgi服务器进行程序运行的,该服务器不适用于生产 ,也不能很好的进行扩展。那么,该如何正确的将自己的应用部署在生产环境上呢?这里我将推荐大家使用uwsgi+nginx进行部署。
准备工作
下载uwsgi
pip install uwsgi
准备好自己的应用
这里我以一个最小化可行性flask应用为例,当请求首页时,会返回‘hello, world!’
字样
# app.py
from flask import Flask
app = Flask(__name__="__main__")
@app.route("/")
def index():
return 'hello, world!'
app.run()
正式部署
uwsgi可通过命令行命令直接部署,但如果配置项较多的情况下,也可通过配置文件进行部署。
命令行直接部署
uwsgi --http :8000 --wsgi-file app.py --callable app
最简化部署只需要3个参数,http
参数配置flask应用要运行的地址<ip>:<port>,wsgi-file
参数配置flask应用(Flask对象)所在的文件,即上文代码所在的文件,callable
参数配置Flask对象
的名称,在上文中的代码即为app
。
运行上述命令后,即可在8000端口访问到我们的应用。
通过配置文件部署
配置文件其实也只不过是把配置参数放到文件中去而已
# uwsgi.ini
[uwsgi]
http = 127.0.0.1:5000
wsgi-file = app.py
callable = app
准备好配置文件后,命令行运行uwsgi --ini uwsgi.ini
即可
结语
重启uwsgi
uwsgi --reload uwsgi.pid
停止uwsgi
uwsgi --stop uwsgi.pid
更多配置参数
uwsgi-docs-zh.readthedocs.io/zh_CN/lates…
结语中的结语
flask应用除了可以用uwsgi直接部署外,一般还会加个nginx搞个代理配置,这个就下一回说吧。
转载自:https://juejin.cn/post/7014036187937505317