同様の質問が寄せられていますが、H12 は多くの原因で発生しているようで、ここに当てはまる回答はありません。以前に heroku で Python アプリを作成したことがありますが、現在は Miguel Grinberg のFlask Mega-Tutorialに従ってパッケージ構造を使用しており、何が問題なのかわかりません。
私のアプリは、Heroku postgres データベースを使用した python / Flask / SQLAlchemy です。アプリは完全にローカルで動作します。Heroku にプッシュすると、H12 が表示されます。
ここに私のアプリの構造があります:
rootappdirectory\
app\
static\
templates\
__init__.py
views.py
models.py
run.py
[plus flask / venv files]
run.py は次のようになります。
import os
from flask import Flask
from app import app
app.run()
app/__init__.py は次のようになります。
(a bunch of imports)
app = Flask(__name__)
db = SQLAlchemy(app)
login_manager = LoginManager()
(a bunch of login_manager stuff)
from app import views, models
私のプロフィールはweb: gunicorn run:app
heroku データベースをローカルおよびリモートで使用しています。アプリは私のローカル マシン (0.0.0.0:5000) で完全に動作します。しかし、heroku にプッシュしてアプリを実行すると、ログは次のようになります。
2013-04-15T06:50:27.165532+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=/favicon.ico host=floating-driftwood-6203.herokuapp.com fwd="24.6.48.240" dyno=web.1 connect=1ms service=30007ms status=503 bytes=0
2013-04-15T06:50:34.908756+00:00 app[web.1]: 2013-04-15 06:50:34 [2] [CRITICAL] WORKER TIMEOUT (pid:65)
2013-04-15T06:50:34.914436+00:00 app[web.1]: 2013-04-15 06:50:34 [2] [CRITICAL] WORKER TIMEOUT (pid:65)
2013-04-15T06:50:34.918114+00:00 app[web.1]: 2013-04-15 06:50:34 [66] [INFO] Booting worker with pid: 66
2013-04-15T06:50:35.083182+00:00 app[web.1]: * Running on http://127.0.0.1:5000/
2013-04-15T06:51:04.216671+00:00 app[web.1]: 2013-04-15 06:51:04 [2] [CRITICAL] WORKER TIMEOUT (pid:66)
2013-04-15T06:51:04.223440+00:00 app[web.1]: 2013-04-15 06:51:04 [2] [CRITICAL] WORKER TIMEOUT (pid:66)
2013-04-15T06:51:04.229350+00:00 app[web.1]: 2013-04-15 06:51:04 [67] [INFO] Booting worker with pid: 67
さまざまなオプションを試してみました。最初は「接続が使用中です」というエラーが表示され、debug=False に入って修正しましたが、率直に言って、debug=True の方がいいです。私のメインアプリがルートディレクトリにないという事実に問題があるようですか?
前もって感謝します。