当我从命令行运行Flask代码时,会出现警告:
Serving Flask app "hello_flask" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
Art*_*ent 42
虽然重量轻且易于使用,但Flask的内置服务器不适合生产,因为它不能很好地扩展,默认情况下一次只能提供一个请求.
鉴于Web应用程序需要处理来自多个用户的多个并发请求,Flask会警告您开发服务器不会执行此操作(默认情况下).它建议使用Web服务器网关接口(WSGI)服务器(部署文档中列出了许多可能性,并为每个服务器提供了进一步的说明),这些服务器将充当您的Web /应用程序服务器,并在服务请求时调用Flask.
las*_*gar 21
尝试gevent:
from flask import Flask
from gevent.pywsgi import WSGIServer
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def index():
return "Hello, World!"
if __name__ == '__main__':
# Debug/Development
# app.run(debug=True, host="0.0.0.0", port="5000")
# Production
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
注意:使用以下命令安装gevent pip install gevent
小智 15
从Flask 1.x开始,默认环境设置为生产.要使用开发环境,请创建名为.flaskenv的文件,并将其保存在项目目录的顶级(根目录)中.在.flaskenv文件中设置FLASK_ENV = development.您还可以保存FLASK_APP = myapp.py.
例:
MyProject的/ .flaskenv
FLASK_APP=myapp.py
FLASK_ENV=development
Run Code Online (Sandbox Code Playgroud)
然后你只需在命令行执行: flask run 应该处理警告.