heroku中的H14错误 - "没有运行的Web进程"

时间:2017-01-23 10:47:41

标签: python html django heroku web-deployment

错误H14在部署到heroku时发生 这是我的procfile:

web: gunicorn -w 4 -b 0.0.0.0:$PORT -k gevent main:app

登录heroku:

2017-01-23T10:42:58.904480+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=meetcapstone.herokuapp.com request_id=df88efb5-a81a-4ac0-86dc-4e03d71266bb fwd="81.218.117.137" dyno= connect= service= status=503 bytes=
2017-01-23T10:42:59.009135+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=meetcapstone.herokuapp.com request_id=21cea981-36b0-4410-891f-548bbc29f0ee fwd="81.218.117.137" dyno= connect= service= status=503 bytes=

要求:

Flask==0.11.1
passlib==1.7.0
SQLAlchemy==1.1.5
Werkzeug==0.11.15
gunicorn==19.0.0
gevent==1.2.1

11 个答案:

答案 0 :(得分:35)

这里的问题是你没有运行任何网络动态。您可以通过以下方式告诉Heroku:

$ heroku ps:scale web=1

这将迫使Heroku旋转网络dyno,从而执行你的gunicorn命令。

答案 1 :(得分:11)

经过3个小时的调试,我弄清楚了为什么我的应用导致此错误:

  1. 我的Procfile的大小写错误
  2. gunicorn未安装在我的venv

在Heroku的末尾没有发现非常基本的错误,对它们不包含在某些错误读数中非常讨厌。

有关dyno configuration的更多信息–有关初始化heroku app的更多信息。

答案 2 :(得分:5)

我在这里也遇到了问题。我的问题是我的Procfile是“ Procfile.txt”。 解决我问题的方法是从Procfile中删除文件扩展名,然后重新提交 并将内容推送到heroku

答案 3 :(得分:3)

  • 登录到Heroku仪表板并打开您的项目。
  • 转到“设置”。
  • 从构建包列表中删除heroku/python
  • 然后单击添加buildpack→选择“ Python”→保存更改。
  • 在代码中激活环境。
  • 运行heroku ps:scale web=1

您完成了!

答案 4 :(得分:1)

我没有回复正确评论的声誉,但是对我来说,问题是我的根目录中没有 run.gunicorn.sh 文件,这导致了出现同样的“没有正在运行的Web进程”错误。

如果没有此文件,请创建包含以下内容的文件:

gunicorn -b :5000 --access-logfile - --error-logfile - build:app

其中“ build”是您的python文件的名称(在本例中为build.py),而app是代码中您的应用的名称。

也要像其他人已经指出的那样,确保gunicorn包含在requirements.txt中。

答案 5 :(得分:1)

我通过转到配置 Dynos 并启用我手动拥有的唯一 dyno 解决了该问题。

答案 6 :(得分:1)

这不是你的代码的问题,但我已经收到了几次这个错误消息,我犯的错误导致它一直在写

web:gunicorn

代替

web: gunicorn

那个空间真的会导致很多问题。

答案 7 :(得分:0)

在此命令之前:

heroku ps:scale web=1

我不得不再次删除并添加buildpack,然后清空提交并将其重新部署到heroku。

heroku buildpacks:clear
heroku buildpacks:add --index heroku/python

答案 8 :(得分:0)

将您的 Procfile 文件从 web:gunicorn 到 web gunicorn(删除“:”)

答案 9 :(得分:0)

我在 web gui 上缺少 dynos。用于缩放的 cli 命令不起作用。我也可能有一个错误的 run:web 声明,缺少 $PORT。修复:

heroku.yml 必须有一个使用 $PORT 变量的网络声明:

build:
  docker:
    web: Dockerfile
run:
  web: uvicorn main:app --reload --host 0.0.0.0 --port $PORT

然后我推到了heroku。

在那之后它必须添加了 web dyno,然后我可以运行:

heroku ps:scale web=1

现在 fastapi uvicorn 运行了。

答案 10 :(得分:0)

注意 Procfile 的命名和位置 (https://devcenter.heroku.com/articles/procfile) Procfile 始终是一个名为 Procfile 的“简单文本文件”,没有文件扩展名。(Procfile.txt 不可接受!)Procfile 必须存在于您的应用程序的根目录。如果放在其他地方,它就不起作用。