Celery代理充当消息存储并将它们发布给一个或多个订阅它们的工作者,
所以:celery将消息发送给经纪人(rabbitmq,redist,celery本身通过django db等等).这些消息是由工作人员按照代理协议检索的,这些消息会记住它们(通常它们是持久的但可能依赖于你的经纪人),并由你的工人执行.
任务结果可在执行的工作人员任务中获得,您可以配置存储这些结果的位置,您可以使用此方法检索它们.
你可以将芹菜传递参数的任务发布到你的"接收函数"(你定义的任务,文档中有一些例子,通常你不想在这里传递大的东西(比如一个查询集),但只有那些允许你的最小信息检索执行任务时所需的内容.
一个简单的例子可能是:
您注册任务
@task
def add(x,x):
return x+y
Run Code Online (Sandbox Code Playgroud)
你从另一个模块调用:
from mytasks import add
metadata1 = 1
metadata2 = 2
myasyncresult = add.delay(1,2)
myasyncresult.get() == 3
Run Code Online (Sandbox Code Playgroud)
编辑
在你编辑之后,我看到你可能想要从芹菜等其他来源构建消息,你可以在这里看到消息格式,它们默认为尊重该格式的pickle对象,所以你将这些消息发布到rabbitmq代理的正确队列中你是正确的从你的工人那里取回它们.
归档时间: |
|
查看次数: |
5964 次 |
最近记录: |