celerybeat - 多个实例和监控

Dmi*_*nov 8 python celery python-2.7 celerybeat

我正在使用芹菜建立应用程序,最近我们要求按计划运行某些任务.

我认为celerybeat是完美的,但我有几个问题:

  1. 是否可以运行多个celerybeat实例,以便不重复任务?
  2. 如何确保celerybeat始终正常运行?

到目前为止,我读到了这个:https: //github.com/celery/celery/issues/251https://github.com/ybrs/single-beat

它似乎应该运行celerybeat的单个实例.

我正在AWS elasticbeanstalk docker容器中运行应用程序,而芹菜工作者也是docker容器(所以它在需要时可以快速扩展).

最好让celerybeat和芹菜工人一起经营supervisord,但似乎这不是正确的方法.

同时拥有celerybeat的单一实例需要手动提供/启动和监控.

Noa*_*amG 7

回答你的两个问题:

  1. 如果你运行几个celerybeat实例,你会得到重复的任务,所以afaik你应该只有一个celerybeat实例.

  2. supervisord正如你所提到的那样使用芹菜工人和芹菜工作者作为deamon所以他们应该一直在运行.

我的supervisord配置:

[program:my_regular_worker]
command=python2.7 /home/ubuntu/workspace/src/manage.py celery worker -Q my_regular_worker-queue_name -c 1 -l info --without-mingle
process_name=my_regular_worker
directory=/home/ubuntu/workspace/src
autostart=true
autorestart=true
user=ubuntu
stdout_logfile=/tmp/my_regular_worker.log
redirect_stderr=true



[program:my_celerybeat_worker]
command=python2.7 /home/ubuntu/workspace/src/manage.py celery worker -Q my_celerybeat_worker-queue_name -c 1 -l info --without-mingle -B -s /tmp/celerybeat-schedule
Run Code Online (Sandbox Code Playgroud)