10

セロリがタスク チェーンをサポートしていることがわかりました: http://celery.readthedocs.org/en/latest/userguide/canvas.html#chains

質問:タスクでチェーンの実行を停止するにはどうすればよいですか?

たとえば、N 個のアイテム (N > 2) のチェーンを取得したとします。2 番目のタスクでは、残りのすべてのタスクを実行する必要がないことがわかります。何をすべきか?

4

1 に答える 1

4

セロリの新しいバージョン (3.1.6) では、チェーンをたどって各アイテムを順番に取り消すだけで、チェーン全体を取り消すことができます。

# Build a chain for results
from tasks import addd
from celery import chain

def revoke_chain(result):
    while result:
        result.revoke()
        result = result.parent

# independent tasks (with immutable signatures)
c = chain(*tuple(add.si(i,i) for i in xrange(50)))
h = c()

# some time later ...
revoke_chain(h)

# dependant task
c = add.s(1,1) | add.s(2) | add.s(3)
h = c()

# some time later ...
revoke_chain(h)
于 2013-12-12T22:14:32.620 に答える