有没有一种方法可以在不在代码上定义任务的情况下,使用celey将消息推送到rabbitmq



我需要将我的应用程序堆栈分离,以便将web和worker作为单独的微服务,即它们都在不同的基础设施中运行,并且都有不同的存储库。

阻塞程序得到的是如何将消息添加到队列中,即task.add.delay(a,b)这意味着任务添加应该在web中,我可以通过使用pika-python包轻松地替换将消息推送到rabbitmqp的方式,但随后我将失去其他功能,如chain,即chain=add(a,b)|send_result();链()

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

您可以使用send_task:http://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)()

最新更新