有人问过类似的问题,但 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 中!我的主应用程序不在根目录中这一事实似乎有问题?
提前致谢。