我试图让用户安排一个周期性的任务。我还在一个容器中运行多个芹菜工人。我对该容器的命令看起来像这样:
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个任务而不是一个。
关于如何做到这一点的任何想法都会有所帮助
您还可以通过启用workers -B选项在工作者中嵌入节拍,如果您永远不会运行多个工作节点,这很方便,但它不常用,因此不建议用于生产:
$ celery -A proj worker -B
因此,您可能需要独立运行节拍,使用:
celery -l INFO -A my.celery.app.celery beat --scheduler my.celery.scheduler.SchedulerClass