2012-10-07 3 views
9

샐러리가 작업 체인을 지원한다는 것을 알게되었습니다 : http://celery.readthedocs.org/en/latest/userguide/canvas.html#chains.셀러리 작업 체인 취소 중?

질문 : 작업에서 체인의 실행을 중지하려면 어떻게해야합니까?

예를 들어, N 항목의 체인 (N> 2)이 있습니다. 그리고 두 번째 작업에서 우리는 나머지 작업을 모두 수행 할 필요가 없다는 것을 알고 있습니다. 무엇을해야합니까?

+1

작업을 중단하고 싶을 때 예외를 발생시키는 것은 어떨까요? – RickyA

+0

good good :) 시도해 보겠습니다. –

+1

작동합니까? ... – RickyA

답변

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)