有没有一种方法可以使用 celery 将消息推送到 rabbitmq 而无需在代码上定义任务
Is there a way of pushing messages to rabbitmq with celery without having the task defined on the code
我需要将我的应用程序堆栈分开,以便将 Web 和 Worker 作为单独的微服务,即它们都 运行 在不同的基础架构中,并且都有不同的存储库。
我得到的阻塞是如何将消息添加到队列中,即 task.add.delay(a,b) 这意味着任务添加应该在 web 中,我可以轻松地替换将消息推送到 rabbitmqp 的方式使用 pika python 包,但随后我将失去其他功能,例如链,即 chain = add(a,b) | send_result();链()
有没有办法在代码中定义任务的情况下使用 celery 将消息推送到 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)()
我需要将我的应用程序堆栈分开,以便将 Web 和 Worker 作为单独的微服务,即它们都 运行 在不同的基础架构中,并且都有不同的存储库。
我得到的阻塞是如何将消息添加到队列中,即 task.add.delay(a,b) 这意味着任务添加应该在 web 中,我可以轻松地替换将消息推送到 rabbitmqp 的方式使用 pika python 包,但随后我将失去其他功能,例如链,即 chain = add(a,b) | send_result();链()
有没有办法在代码中定义任务的情况下使用 celery 将消息推送到 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)()