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

を実行して、ルートのデバッグファイル「runapp.py」にGunicornを向けようとしましたgunicorn -b 127.0.0.1:5000 runapp.pyが、結果はになりerror: [Errno 48] Address already in useます。

私は何が間違っているのですか?

編集:ファイル構造

/runapp.py
/mymodule/__init__.py
/mymodule/views.py

runapp.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()

views.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します。つまり、おそらくアプリを2回実行します。

この404問題は、ルートの不足が原因で発生します。モジュールappにインポートしないため、ルートが適切にアタッチされていません。Flaskのドキュメントviewsから:

次に例を示し__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!'

__init__.pyinビューは、Flaskインスタンスの作成にインポートされることに注意してください。

于 2012-12-02T20:49:04.523 に答える