我正在将 Flask 应用程序部署到 WSGI 服务器。在我的开发代码中,我有典型的
if __name__ == '__main__': app.run()
块来在本地运行应用程序。我不确定使用 WSGI 服务器时是否需要此代码片段。
在 WSGI 服务器上部署是否需要
if __name__ == '__main__': app.run()
块?
如果不通过 app.run()
,WSGI 服务器如何与我的 Flask 应用程序交互?
我已经阅读了 Flask 部署文档,但我希望能特别针对 WSGI 服务器进行澄清。
flask run 命令似乎在没有
if __name__ == '__main__': app.run()
块的情况下启动 Flask 应用程序,而直接运行 python app.py
则不然。这表明可能在其他地方定义了替代入口点。
在部署中需要
if __name__ == '__main__': app.run()
Flask 应用程序中的此块。
将 Flask 应用程序部署到 WSGI 服务器时,不需要 if name == 'main': app.run() 块。当您直接使用 Python app.py 执行脚本时,此块用于运行 Flask 开发服务器。然而,在具有 WSGI 服务器的生产环境中,服务器本身会调用应用程序的可调用对象(通常是 Flask 应用程序实例)来处理请求。
Different成为Flask应用程序的入口点 文档链接:
我将使用 Gunicorn 进行展示,因为它是生产模式中的一个流行选项。
from flask import Flask
app = app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World
gunicorn -w 4 'hello:app'