2012-10-07 27 views
9

मैंने पाया कि अजवाइन कार्य श्रृंखलाओं का समर्थन करता है: http://celery.readthedocs.org/en/latest/userguide/canvas.html#chainsसेलेरी कार्य श्रृंखला रद्द करना?

प्रश्न है: मैं किसी कार्य में श्रृंखला के निष्पादन को कैसे रोक सकता हूं?

उदाहरण के लिए, हमें एन आइटम (एन> 2) की एक श्रृंखला मिली है। और दूसरे कार्य में हम महसूस करते हैं कि हमें निष्पादित किए जाने वाले सभी शेष कार्यों की आवश्यकता नहीं है। क्या करें?

+1

जब आप इसे रोकना चाहते हैं तो कार्य में अपवाद उठाने के बारे में क्या? – RickyA

+0

अच्छा लगता है :) मैं –

+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) 
संबंधित मुद्दे