signature
signature 包含了位置参数、关键字参数和任务执行选项 它就可以被传递到函数里或序列化后在网上传递。
创建signature
from celery import signature
signature('tasks.add', args=(2, 2), countdown=10)
add.signature((2, 2), countdown=10)
add.s(2, 2)
add.s(2, 2, debug=True)
同样的,使用s快捷方式是不能设置选项的,可用:
add.s(2, 2).set(countdown=1)
如果想把签名设置为不可更改的:
add.apply_async((2, 2), link=reset_buffers.signature(immutable=True))
add.apply_async((2, 2), link=reset_buffers.si()) # 快捷方式
回调
add.apply_async((2, 2), link=other_task.s())
原语
概览
group 一系列任务应该同时运行的,chain一链任务应该一个接着一个运行的,chord是一个group的任务完成后再跟一个任务,map和python内置map函数类似,starmap是用于一个函数需要多个参数的情况,chunks把大参数列表分块。
例子:
from celery import chain
res = chain(add.s(2, 2), add.s(4), add.s(8))()
res.get()
或
(add.s(2, 2) | add.s(4) | add.s(8))().get()
from celery import group
res = group(add.s(i, i) for i in xrange(10))()
res.get(timeout=1)
from celery import chord
res = chord((add.s(i, i) for i in xrange(10)), xsum.s())()
res.get()