芹菜击败不是从Heroku开始

时间:2016-07-13 20:21:35

标签: python heroku celery django-celery celerybeat

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

Procfile

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

可以看到在Heroku应用程序启动后启动了工作人员:

$ 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的限制还是我做错了什么?

2 个答案:

答案 0 :(得分:4)

Heroku only allow two free Dyno instances in one application if I'm not mistaken.

答案 1 :(得分:1)

@Jared Goguen:嗨,朋友,

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

  

在Heroku上部署

     

如果您已经在上面创建了一个Procfile并为消息代理和结果存储添加了相应的附加组件,那么剩下要做的就是推送并扩展您的应用程序:

git push heroku master

heroku ps:scale worker=1
  

当然,您可以随时扩展到任意数量的工作人员。现在像在本地一样运行任务:

heroku run python

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

您应该看到应用程序日志中正在运行的任务:

heroku logs -t -p worker

来源:Heroku Guides