两个项目时,工人未收到芹菜任务



我的同事编写了芹菜任务,设置文件中的必要配置以及主管配置文件。一切都很好。这些项目已移交给我,我看到了一些我必须解决的问题。

单台计算机上有两个项目,两个项目几乎相同,我们称它们为projAprojB

susperisord.conf文件为:

;for projA
[program:celeryd]
directory=/path_to_projA/
command=celery -A project worker -l info
...
[program:celerybeat]
directory=/path_to_projA/
command=celery -A project beat -l info
...
; For projB
[program:celerydB]
directory=/path_to_projB/
command=celery -A project worker -l info
...
[program:celerybeatB]
directory=/path_to_projB/
command=celery -A project beat -l info
...

问题是,我正在通过循环创建任务,并且从projAceleryd收到了一个任务,并且未接收到剩余的任务(或可以通过projBceleryd接收)。

但是,当我停止projB芹菜程序时,一切正常。请注意, django -app的实际名称是项目,因此芹菜-A项目工作者/Beat -L信息。

请裸露,我是芹菜的新手,对任何帮助都表示赞赏。tia。

正如芹菜文档所说,

芹菜是基于分布式消息传递的异步任务队列/作业队列。

当通过循环创建多个任务时,任务均匀分配给两个不同的工人,即projA的工人和projB的工人,因为您的工人是相同的。

如果项目相似或您提到的几乎相同,则可以使用Celery Queue,但是当然,跨项目的队列应该有所不同。这里提供了同样的芹菜文档。

您需要设置CELERY_DEFAULT_QUEUECELERY_DEFAULT_ROUTING_KEYCELERY_QUEUES 在您的设置.py文件中。

和您的supervisor.conf文件需要所有程序的命令行中的队列名称。

for ex: command=celery -A project beat -l info -Q <queue_name>

这应该根据我的经验来起作用。

相关内容

  • 没有找到相关文章

最新更新