有没有一种方法可以在没有代码定义的任务的情况下用芹菜将消息推送到rabbitmq

时间:2015-11-04 12:56:49

标签: django rabbitmq celery

我需要将我的app堆栈分开,将web和worker作为单独的微服务,即它们都运行在不同的基础架构中,并且都有不同的存储库。

拦截器得到的是如何将消息添加到队列中,即task.add.delay(a,b)这意味着任务添加应该在web中,我可以轻松地替换使用pika将消息推送到rabbitmqp的方式python包但然后我将松开其他功能,如链即链=添加(a,b)| send_result();链()

有没有办法在没有代码

的情况下定义任务的情况下用芹菜将消息推送到rabbitmq

1 个答案:

答案 0 :(得分:3)

您可以使用send_taskhttp://docs.celeryproject.org/en/latest/reference/celery.html#celery.Celery.send_task

这样您就可以执行app.send_task('tasks.add', args=[1,2])

之类的操作

如果您需要链接任务,则应使用签名(http://docs.celeryproject.org/en/latest/reference/celery.html#celery.signature):

from celery import signature, chain

sig1 = signature('tasks.add', args=[1,2])
sig2 = signature('tasks.add', args=[4,9])
result = chain(sig1, sig2)()