Heroku - 没有运行的网络进程

18
我使用Python中的tweepy创建了一个Twitter机器人,并尝试使用Heroku进行部署。该机器人会在一定时间间隔后推文。但是,在部署后,Python程序并未运行,而Heroku日志显示以下错误:
at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=fathomless-island-25537.herokuapp.com request_id=0aa76d12-31e6-4940-85ec-a8476af4f82f fwd="182.64.210.145" dyno= connect= service= status=503 bytes=

在查看一些类似的问题,需要部署django应用程序时,我尝试了以下操作:

heroku ps:scale web=1

并且获得了:

Scaling dynos... !
 !  Couldn't find that formation.

这是否意味着程序未能建立Web进程,或者与dynos有关的其他问题?或者我需要在程序中包含一些与dynos相关的代码?我不知道这整个过程中的哪个部分有问题。如果这太基础了,请见谅。


你能发布你的 Procfile 吗? - Michał Młoźniak
1
@MichałMłoźniak; Procfile 文件中写着 worker: python bot.py - arjun gulyani
所以你应该执行 heroku ps:scale worker=1 - Michał Młoźniak
当我在应用程序文件夹中执行 heroku ps:scale worker=1 命令时,我会得到 Scaling dynos... done, now running worker at 1:Free 的输出。 - arjun gulyani
3个回答

9
这个问题有点老了,但是无论如何...
在你扩展 dynos 之前,你需要有一个 Procfile,在其中定义进程启动时应该发生什么。在你的情况下,进程应该被称为 "web"。我们稍后会讨论文件的内容。
但首先:我认为在 Heroku 上运行 Python 应用程序最好使用 gunicorn,因此首先您应该安装 gunicorn,运行 `pip freeze > requirements.txt` 并将其推送到 Heroku(好吧,在您拥有 Procfile 之前请等待)。更多信息请参见:Heroku 上的 Python 和 Gunicorn
Procfile 只需要一行 `web: gunicorn :
`。在你的情况下,这将是(假设你的主方法名为 'app')`web: gunicorn bot:app`。
现在将所有内容推送到 Heroku,然后您可以使用命令 `heroku ps:scale web=1` 扩展 dyno。

1
我把我的Procfile从“web:gunicorn website.wsgi”改成了“web:gunicorn website.wsgi:app”,但仍然出现相同的错误。引号已经包含在内了。有什么建议吗? - Aaron Mazie

8
我很久没能让我的应用程序成功加载,直到我修改了我的 Procfile 文件。
接下来的内容需要翻译。
web: gunicorn app:app

to

web gunicorn app:app

web后面的:删掉,这样做对我有效。

2
当你尝试使用heroku ps:scale web=1和其他所有方法都失败时,请检查是否有正确名称和内容的Procfile文件。我曾经遇到过这样的问题。在修复了名称和内容之后,将更新推送到heroku后,应用程序会自动启动。之后,heroku open按预期工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接