【问题标题】:H14 error in heroku - "no web processes running"Heroku 中的 H14 错误 - “没有运行 Web 进程”
【发布时间】:2017-06-07 20:29:54
【问题描述】:

部署到heroku时发生错误H14 这是我的过程文件:

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

【问题讨论】:

  • 请显示您部署时的整个日志。启动 gunicorn 是否有任何错误?

标签: python html django heroku web-deployment


【解决方案1】:

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

$ heroku ps:scale web=1

这将迫使 Heroku 启动一个 web dyno,从而执行你的 gunicorn 命令。

【讨论】:

  • 我应该把它写在procfile中吗?
  • 太棒了!我在输入格式错误的 procfile 然后更正它后触发了这个问题
  • 很奇怪,必须先禁用 Heroku 仪表板中的测功机。谢谢!
  • 缩放测功机...! ▸ 找不到该进程类型(网络)。
  • (好吧,缺少一个 Procfile ——除非你使用他们的示例代码,否则非常混乱)
【解决方案2】:

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

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

IMO,这个错误应该在 Heroku 端提出。作为初学者,这种错误很难追查。

更多关于dyno configuration 的信息——更多关于初始化你的heroku app

【讨论】:

    【解决方案3】:

    在此命令之前:

    heroku ps:scale web=1
    

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

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

    【讨论】:

    • 我收到了Error: Expected an integer but received: heroku/python 你的最后一条命令
    • heroku buildpacks:set heroku/python
    • !找不到该进程类型(网络)。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      heroku ps:scale web=1
      

      【讨论】:

      • 谢谢你救了我的命:D
      【解决方案6】:
      • 登录您的 Heroku 仪表板并打开您的项目。
      • 转到设置。
      • 从 buildpack 列表中删除 heroku/python
      • 然后点击添加 buildpack → 选择“Python” → 保存更改。
      • 在您的代码中激活您的环境。
      • 运行heroku ps:scale web=1

      你就完成了!

      【讨论】:

      • 在代码中激活环境是什么意思?
      【解决方案7】:

      这不是您的代码的问题,但我已经收到过几次此错误消息,并且我所犯的错误导致它一直在编写

      web:gunicorn
      

      而不是

      web: gunicorn
      

      这个空间确实会导致很多问题。

      【讨论】:

        【解决方案8】:

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

        如果您没有此文件,请使用内容创建它:

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

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

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

            uff..这需要一些时间,所以我必须做的修复是:

            1. 'Procfile' 大写 P。
            2. web: gunicorn wsgi:app(在 procfile 中 web: 后面有一个空格)
            3. 确保 requirements.txt 位于项目根文件夹中。

            【讨论】:

            • 谢谢兄弟,我尝试了将近 2 天我无法部署。在机会是 p 到 P 之后,它就是工作。谢谢。
            【解决方案11】:

            更改您的 Procfile 文件 web:gunicorn 到 web gunicorn (去掉':')

            【讨论】:

              【解决方案12】:

              我在 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 运行了。

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                  【解决方案14】:

                  是的,我也在使用 web heroku-php-apache2 dyno 并将其恢复为免费层,这导致 dyno 进入休眠状态,幸运的是,执行 heroku ps:scale web=1 -a <app name> 发挥了作用。

                  【讨论】:

                    【解决方案15】:

                    面临完全相同的问题原来我在.gitignore 中有Profile

                    【讨论】:

                      【解决方案16】:

                      我将我的 django Procfile 放在带有 settings.py 的目录中,而不是根目录中,这给了我 H14 错误。我用这个修复了错误,我不需要做他们说的任何其他事情。

                      Procfile
                      

                      web: gunicorn .wsgi

                      【讨论】:

                        猜你喜欢
                        • 2012-04-15
                        • 1970-01-01
                        • 2015-09-22
                        • 2012-07-09
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-07-30
                        • 2012-12-19
                        • 2021-10-17
                        相关资源
                        最近更新 更多