在芹菜中播放消息

时间:2013-09-05 19:35:50

标签: python celery broadcast

我正在使用芹菜,并希望向几个工人发送广播任务。我试图按照http://docs.celeryproject.org/en/latest/userguide/routing.html#broadcast所描述的那样去做,所以我创建了一个带有任务的简单app:

@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'])

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

1 个答案:

答案 0 :(得分:0)

你在使用什么经纪人?

如果您使用的是Redis,目前它将无法按照此主题中的说明运行:

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

我正在使用RabbitMQ,它运行正常。