5

我正在使用芹菜,想向几个工人发送广播任务。我正在尝试像http://docs.celeryproject.org/en/latest/userguide/routing.html#broadcast上描述的那样做,所以我创建了带有任务的简单应用程序:

@celery.task
def do_something(value):
    print value

在我制作的应用程序中:

from kombu.common import Broadcast
CELERY_QUEUES = (Broadcast('broadcast_tasks'), )
CELERY_ROUTES = {'my_app.do_something': {'queue': 'broadcast_tasks'}}

然后我试图通过以下方式向工人发送任务:

my_app.do_something.apply_async(['222'], queue='broadcast_tasks')

或者:

my_app.do_something.apply_async(['222'])

但不幸的是,在第一种方式中,任务一次“通常”只发送给一个工人 - 所以如果我有两个工人,那么任务是完成一次或第二个工人完成一次。在第二种方式中,我不知道这项任务在哪里完成,因为在任何工人身上都没有结果。也许你们中的某个人会知道为什么它不像广播那样工作以及我在这里做错了什么。提前感谢您的帮助。

4

1 回答 1

0

你用的是什么经纪人?

如果您使用的是 Redis,目前它不会像这个线程中解释的那样工作:

https://groups.google.com/forum/#!searchin/celery-users/broadcast/celery-users/s4v_0ndiLT8/rJSME59TQ4YJ

我正在使用 RabbitMQ,它工作正常。

于 2013-11-27T10:02:50.340 回答