我不需要Flask应用程序中的run()方法?

Kex*_*Ari 3 python flask

我的linode上有一个Flask应用程序设置,其目录结构如下:

|--------flask-test
|----------------app
|-----------------------static
|-----------------------templates
|-----------------------venv
|-----------------------__init__.py
|-----------------------main.py
Run Code Online (Sandbox Code Playgroud)

__init__.py是:

# __init__.py
from flask import Flask
from main import main
app = Flask(__name__)
app.register_blueprint(main)
app.run()
Run Code Online (Sandbox Code Playgroud)

并且main.py像这样:

# main.py
from flask import Blueprint

main = Blueprint('main',__name__)
@main.route("/")
def hello():
    return "Hello World!"

@main.route("/england/")
def england():
    return "Hello England!"
Run Code Online (Sandbox Code Playgroud)

如果我在本地运行应用程序没有问题.如果我在Web浏览器中转到我的服务器地址,则会出现内部服务器错误.但是,如果我删除该行:app.run__init__.py它工作正常.为什么是这样?为什么我不需要run方法?

Cfr*_*eak 7

你应该做

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

原因是Apache或NGINX或其他一些Web服务器直接在服务器上加载您的应用程序,但app.run()运行flask的内部Web服务器,以便您可以测试您的应用程序.