当前位置: 首页 > 知识库问答 >
问题:

Heroku应用程序在本地运行,但得到H12超时错误(使用包)

黄彬
2023-03-14

类似的问题已经被提出,但H12似乎是由许多事情引起的,没有一个答案适用于这里。我以前用heroku构建过python应用程序,但现在我使用的是Miguel Grinberg的Flask Mega教程中的包结构,我不知道哪里出了问题。

我的应用程序是python/Flask/SQLAlchemy,带有Heroku postgres数据库。该应用程序完全在本地工作。当我推到Heroku时,我得到了一个H12。

下面是我的应用程序结构:

  rootappdirectory\
      app\
        static\
        templates\
        __init__.py
        views.py
        models.py
      run.py
      [plus flask / venv files]
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

我的Procfile是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

我使用了不同的选项--一开始我得到了一个“Connection in use”错误,我通过进入debug=false来修复它,但坦率地说,我更愿意进入debug=true!我的主应用程序不在根目录中似乎有问题?

提前谢了。

共有1个答案

郝永思
2023-03-14

问题是run.py不小心调用app.run-这实际上调用werkzeug.serving.run_simple,它启动一个子进程来处理传入的请求...在gunicorn下运行时您不想这样做(因为gunicorn将为您处理进程管理)。

只要在app.run调用之前添加一个if_name__==“__main__”保护,一切都应该正常:

# run.py
if __name__ == "__main__":
    app.run()
 类似资料:
  • 我一直使用Heroku从很长一段时间,它的工作很好。现在没有任何环境变化,赫鲁库不再为我工作了。我的应用程序在本地运行良好,但当我在heroku上部署它时,它会给应用程序带来错误。然后我创建了一个新的应用程序,在没有做任何更改的情况下,我在Heroku上部署了这个新的应用程序。它给出了完全相同的错误,这意味着问题不是我的应用程序,而是heroku或我部署应用程序的方式。 我使用create rea

  • 问题内容: 我使用Node.JS和Socket.IO创建了一个简单的聊天应用程序,在本地一切正常,但是当我将其推送到heroku时,它给了我一个应用程序错误,当我检查日志时,这是错误: 因此,我发现indexof是Socket.IO使用的模块,它位于我的node_modules文件夹中,但是由于某种原因,它没有被推送到heroku或只是未被识别。我将模块重新安装了5-6次,并重新创建了应用程序,但

  • 问题内容: 我正在学习本教程:https : //github.com/ITPeople-Blockchain/auction, 并在以下步骤中:“建立对等和订购者二进制文件并启动订购者”,命令如下:make native 我收到以下错误: Makefile:71:***“没有进入PATH:检查依赖项”。阿雷斯托。 我在VirtualBox上使用Ubuntu,并且正确设置了gopath 问题答案:

  • 我看到了其他相关问题,但对解决方案不满意。 我已经根据我的要求对上面的教程做了我自己的修改,像使用城市,国家实体而不是学生。 我的beans.xml是这样的 和CountryJDBCTemplate.java如下所示: 2013年12月11日下午1:06:02 org.springframework.context.support.classpathxmlapplicationcontext准备r

  • 错误如下: 02-11 13:24:31.561 526 2-5262/?E/AndroidRuntime:致命异常:main process:com.example.vicky.project,pid:5262 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.vicky.project/com.example.vicky.pr

  • 我试图在eclipse中执行这个java代码,使用Appium和一个使用USB连接的实际设备。我无法在设备中对安装在设备中的应用程序进行测试。