Heroku 中的 H14错误-“没有正在运行的 Web 进程”

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

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
175364 次浏览

这里的问题是你没有运行任何 web dynos,你可以通过以下方式告诉 Heroku:

$ heroku ps:scale web=1

这将迫使 Heroku 旋转一个网络动态,从而执行您的枪角兽命令。

在这个命令之前:

heroku ps:scale web=1

I had to remove and add buildpacks again and empty commit it and redeploy it to heroku.

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

经过3个小时的调试,我终于明白了为什么 我的应用会导致这个错误:

  1. 我的 Procfile是错误的大小写
  2. 我的 venv没有安装 gunicorn

在我看来,这个错误应该在 Heroku 这边提出来。作为一个初学者,这种错误是很难追踪的。

更新: 澄清一下,Procfile的大小写是正确的,而 procfile的大小写不正确。它应该从大写的 "P"开始。

More info on 动态配置 – more on initializing your Heroku 应用.

我这里也有一个问题,我的问题是我的 Profile.txt 文件是“ Procfile.txt”。 解决我问题的办法是从 Procfile 删除文件扩展名,然后重新提交 把东西推给 Heroku

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

你完蛋了!

我没有回复正确评论的声誉,但对我来说,问题是我的根目录中没有 快跑 Gunicorn 嘘文件,这导致了同样的“ No web process running”错误。

如果你没有这个文件,创建它的内容:

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

其中‘ build’是 Python 文件的名称(在本例中是 build.py) ,app 是代码中应用程序的名称。

Also make sure that gunicorn is included in requirements.txt, like others have already pointed out.

将您的 Profile 文件从 Web: gunicorn 到 web gunicorn (删除’:’)

我通过进入 ConfigureDynos 并手动启用唯一的 dyno 修复了这个问题。

我错过了网络用户界面上的 dynos。调整大小的 cli 命令不起作用。我也可能有一个不正确的运行: Web 声明与丢失 $PORT。修正:

heroku.yml must have a web declaration using the $PORT var:

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 跑起来了。

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

web:gunicorn

而不是

web: gunicorn

那个空间真的会引起很多问题。

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

我也遇到了同样的问题,只不过原因不同。我本来有兴趣层,但是后来取消了,又回到了免费层。这样做会导致错误,我是如何修复它的,只是从 cli 重新运行命令:

heroku ps:scale web=1

是的,我也使用 web heroku-php-apache2动态,并恢复到自由层,这导致动态睡眠幸运地执行 heroku ps:scale web=1 -a <app name>做了魔术。

uff..that took some time,so the fixes i had to make were:

  1. 大写字母 P 的“ Profile”。
  2. web: gunicorn wsgi:app (with a space after web: in procfile)
  3. Making sure the requirements.txt are in the root project folder.

面对完全相同的问题,原来我有 Profile.gitignore

I was placing my django Procfile in the directory with settings.py and not the root directory and that gave me the H14 error. I fixed the error with this and I didn't need to do anything else they say.

Procfile

Web: gunicorn < django-root-name (包含 wsgi) > . wsgi

我有一个 UAT 版本,我只在客户端开发期间启用。

我有一个自定义的动态脚本,但它已转向免费版本。所以应用程序没有启动,因为我的脚本没有运行。当我启用 Dyno 时,开关仍然关闭: 翻转:

enter image description here

这里有很多可能出错的地方。它结合了 Heroku 糟糕的牧羊和酒瓶与枪角兽之间模棱两可的使用。

这里有一个 好向导,它可以帮助你起步和运行:

What worked for me was adding on the second line of the procfile:

heroku ps:scale web=1

第一行必须包含:

web: gunicorn "filename":"main method name"

任何人只要看到这个..。

  1. 删除你的程序
  2. 用大写字母 P 创建“ Procfile”。
  3. 在你的 Procfile 类型中: web: gunicorn <nameOfRootFile>:app(在 web: in Procfile 之后有一个空格)例如,我的是 web: gunicorn app:app另一种方式我写它的工作原理是这样的: web: gunicorn -w 4 "app:create_app()" -t 120
  4. 确保 requments.txt 在根项目文件夹中。(如果没有创建文件,可以运行 pip freeze > requirements.txt
  5. 部署到 Heroku
  6. heroku ps:scale web=1(您可以指定应用程序名称喜欢这个 heroku ps:scale web=1 -a appname
  7. 最后在终端运行 heroku 重新启动
  8. 希罗库打开

这些都是我为了让我的计划成功而采取的步骤