Gunicorn 显示 404 而不是应用程序

phi*_*dah 2 python flask gunicorn

我有一个 Flask 应用程序,我试图通过 Gunicorn 运行它。

该应用程序位于一个模块中,假设其名为“mymodule”,并且__init__.py位于的文件mymodule/如下所示:

from flask import Flask
app = Flask(__name__)

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

但是,无论 URL 是什么,都会返回 404 错误。

我尝试在包含 mymodule 文件夹的文件夹中运行 Gunicorn:

gunicorn -b 127.0.0.1:5000 mymodule:app
Run Code Online (Sandbox Code Playgroud)

我尝试通过运行将 Gunicorn 指向根目录中的调试文件“runapp.py” gunicorn -b 127.0.0.1:5000 runapp.py,但这会导致error: [Errno 48] Address already in use.

我究竟做错了什么?

编辑:文件结构

/runapp.py
/mymodule/__init__.py
/mymodule/views.py
Run Code Online (Sandbox Code Playgroud)

运行应用程序.py:

from mymodule import app, views
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

__init.py__:

from flask import Flask
from mymodule import views

app = Flask(__name__)

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

视图.py

from mymodule import api
from mymodule.forms import SettingsForm
from functools import wraps
from flask import request, Response, render_template, redirect, url_for

[...]

@app.route('/')
@requires_auth
def dashboard():
    data = api.get_overview()
    return render_template('dashboard.html', data=data)
Run Code Online (Sandbox Code Playgroud)

Nad*_*oli 5

之所以会出现这种情况,Errno 48是因为同一个端口 ( 5000) 已经忙于另一个应用程序,这意味着您可能会运行应用程序两次。

\n\n

404问题是由于缺乏路线造成的。路由未正确附加,app因为您未将其导入views模块中。来自Flask 文档

\n\n
\n

这里\xe2\x80\x99s 是一个例子__init__.py

\n\n
from flask import Flask\napp = Flask(__name__)\n\nimport yourapplication.views\n
Run Code Online (Sandbox Code Playgroud)\n\n

这就是views.py 的样子:

\n\n
from yourapplication import app\n\n@app.route(\'/\')\ndef index():\n    return \'Hello World!\'\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

请注意,__init__.py视图是在创建 Flask 实例后导入的。

\n