运行Flask时出现警告消息

Har*_*tya 50 python flask

当我从命令行运行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文档中所述:

虽然重量轻且易于使用,但Flask的内置服务器不适合生产,因为它不能很好地扩展,默认情况下一次只能提供一个请求.

鉴于Web应用程序需要处理来自多个用户的多个并发请求,Flask会警告您开发服务器不会执行此操作(默认情况下).它建议使用Web服务器网关接口(WSGI)服务器(部署文档中列出了许多可能性,并为每个服务器提供了进一步的说明),这些服务器将充当您的Web /应用程序服务器,并在服务请求时调用Flask.

  • 如果您不知道如何设置WSGI或在哪里查找指令,那么您可能不需要它.只要您不想在生产中运行Flask代码(=公开网站),您就可以使用Flask的内置网络服务器了.如果您有多个客户端访问您的服务,请确保设置`threaded = True`,如[here](/sf/ask/1036994101/)所示. (5认同)
  • @HarshitSatya我链接的文档引导您完成一大堆各种WSGI选项.对于开发,不需要.除此之外的解释将超出这个问题的范围,并且可能过于宽泛("我如何部署我的Flask应用程序?"),因为整个教程专门用于此在线.就个人而言,我使用pythonanywhere,因为它使部署变得简单. (2认同)
  • 应该接受这个答案.Arthur Dent都解释了这个问题,并将文档链接到如何解决它.谢谢,亚瑟. (2认同)

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 应该处理警告.


Fra*_*urt 6

删除“请勿在生产环境中使用开发服务器”。警告,运行:

出口FLASK_ENV =发展

之前flask run