4 工作流

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()

Chains

Groups

Chords

Map Startmap

Chunks

你可能感兴趣的:(4 工作流)