芹菜有多名工人,但只有一名工人

时间:2019-04-03 10:34:37

标签: celery celerybeat periodic-task

我正在尝试允许用户安排定期任务。我还在一个容器中运行多个芹菜工人。 我对该容器的命令通常如下所示:

celery worker -c 4 -B -l INFO -A my.celery.app.celery --scheduler my.celery.scheduler.SchedulerClass

但是发生的事情是计划的时间在运行该任务时运行了4次。

所以我读到你应该有一个专心工作的人。我将命令更改为此:

celery worker -c 4 -l INFO -A my.celery.app.celery

并添加了另一个与运行命令的容器完全相同的容器:

celery -l INFO -B -A my.celery.app.celery --scheduler my.celery.scheduler.SchedulerClass

希望现在只有一个节拍,就不会有重复的任务。但是我仍然可以运行4个任务,而不是一个。

关于如何完成此操作的任何想法都会有所帮助

1 个答案:

答案 0 :(得分:1)

来自documentation

  

您还可以通过启用worker -B选项将beat嵌入到worker中,如果您永远不会运行一个以上的worker节点,这很方便,但是它并不常用,因此不建议将其用于生产:

     

$芹菜-一个项目工人-B

因此,您可能需要使用以下命令独立运行 beat

celery -l INFO -A my.celery.app.celery beat --scheduler my.celery.scheduler.SchedulerClass