2

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

该应用程序位于一个模块中,可以说它称为“mymodule”,__init__.py位于其中的文件mymodule/如下所示:

from flask import Flask
app = Flask(__name__)

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

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

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

gunicorn -b 127.0.0.1:5000 mymodule:app

我尝试通过运行将 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

运行应用程序.py:

from mymodule import app, views
app.run(debug=True)

__init.py__

from flask import Flask
from mymodule import views

app = Flask(__name__)

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

视图.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)
4

1 回答 1

4

你得到Errno 48是因为同一个端口 ( 5000) 已经为另一个应用程序忙,这意味着你可能会运行你的应用程序两次。

404问题是由于缺少路线引起的。路由没有正确附加,app因为您没有在views模块中导入它。来自Flask 文档

这是一个例子__init__.py

from flask import Flask
app = Flask(__name__)

import yourapplication.views

这就是 views.py 的样子:

from yourapplication import app

@app.route('/')
def index():
    return 'Hello World!'

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

于 2012-12-02T20:49:04.523 回答