芹菜打败了 Heroku

Celery beat not starting on Heroku

我有一个在 Heroku 上启动的应用程序,但是当我启动服务器时 Celery 节拍进程没有启动。

Procfile

web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat

启动Heroku应用后可以看到worker启动:

$ heroku ps

=== web (Free): gunicorn -w 4 connect.wsgi (1)
web.1: starting 2016/07/13 16:17:18 -0400 (~ 9s ago)

=== celery (Free): python manage.py celeryd -c 3 --beat (1)
celery.1: up 2016/07/13 16:17:25 -0400 (~ 2s ago)

但是,为了获得 Celery 节拍进程 运行,我必须在 Heroku 中明确启动它:

heroku run python manage.py celerybeat

Celery beat 在本地启动良好。这是 Heroku 的限制还是我做错了什么?

如果我没记错的话,Heroku 只允许在一个应用程序中使用两个免费的 Dyno 实例。

@Jared Goguen:嗨朋友,

您可能需要在 Heroku 中扩展您的工作人员,

Deploying on Heroku

If you already created a Procfile above and attached the appropriate add-ons for the message broker and result store, all that’s left to do is push and scale your app:

git push heroku master

heroku ps:scale worker=1

Of course, at any time you can scale to any number of worker dynos. Now run a task just like you did locally:

heroku run python

>>> import tasks
>>> tasks.add.delay(1, 2)

You should see the task running in the application logs:

heroku logs -t -p worker

来源:Heroku Guides

如果您的 运行 在带有单个 dyno 的免费层 heroku 上,那么您最好的选择是使用 honcho python foreman 的克隆工具来管理基于 Procfile 的应用程序。克隆 https://github.com/nickstenning/honcho,这将允许你为你的芹菜分叉多个进程 beat/workers。您仍然会受到 heroku 的免费层级内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说,没有什么太重的好处了

安装老板

pip install honcho

确保 honcho 是您 requirement.txt

的一部分

pip freeze > requirements.txt

创建 ProcfileHoncho 存储所有原始 Procfile 内容

ProcfileHoncho

web: gunicorn myDjangoApp.wsgi --log-file -
worker1: celery -A myDjangoApp beat -l info
worker2: celery -A myDjangoApp worker -l info

Procfile

web: honcho start -f ProcfileHoncho

确保您通过配置变量加载您的代理 url 并指向您的免费托管代理。相信您可以通过快速 google 搜索

找到一个免费经纪人
git push heroku master
heroku logs -t 

查看日志看是否有任何错误。此时你应该可以开始了。