Flask 实例名称必须是 'application',任何其他名称,如 'app' 都会失败

Flask instance name must be 'application', anything else, like 'app' will fail

我一直致力于在 Ubuntu 机器上将我的 Flask Web 应用程序配置为 运行,以便从框架的开发服务器转移到生产服务器。

为了帮助我配置 WSGI 和 nginx,我遵循了 DigitalOcean

发布的指南

按照指南,一切正常!但是请注意,在此示例中,Flask 的实例被命名为 'application',与几乎 everywhere 常用的 'app' 有点不同(例如在 Flask 网站和文档中)。

myflaskapp.py 的内容:

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    application.run()

wsgi.py 的内容:

from weather import application

if __name__ == "__main__":
    application.run()

但是,如果我要将上述文件中的实例名称从 'application' 更改为 'app',我会收到一个 'Internal Server Error',日志文件中没有任何内容说明原因。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

from myflaskapp import app

if __name__ == "__main__":
    app.run()

根据上面发布的教程中的评论,其他一些用户遇到了同样的问题。我不明白为什么这个特定的服务器要求名称是 'application' - 这是我可以接受的,但它看起来很奇怪。

感谢您提供的任何想法!

假设您指的是 uWSGI,它会寻找名为 application 的东西。如果你想给它一个不同的名字,你可以在你的配置中指定一个:

[uwsgi]
callable = app