2013-06-25 6 views
5

Was ist der Sinn der Sellerie Kette, wenn die ganze Kette bricht, wenn eine der Aufgaben fehlschlägt? !!Sellerie Kette bricht, wenn eine der Aufgaben fehlschlägt

Ich habe diese Sellerie Kette:

res = chain(workme.s (y=1111), workme2.s(2222), workme3.s(3333),)() 

Und ich habe workme2 mit Wiederholungen wie dies fehlschlägt:

@celery.task(default_retry_delay=5, max_retries = 10, queue="sure") 
def workme2(x,y): 
    # try:  
    try: 
     print str(y) 
     sleep(2) 
     print str(x) 
     ## adding any condition that makes the task fail 
     if x!=None: 
      raise Exception('Aproblem from your workme task') 
     print 'This is my username: ' + str(x['user']) + \ 
       ' And Password: ' + str(x['pas'])   
     return "22xx" 
    except Exception, exc: 
     workme2.retry(args=[x,y], exc=exc,) 
+0

http://stackoverflow.com/questions/11508112/retrying-sellery-failed-tasks-that-are-part-of-a-chain –

+0

@BernhardVallant, Hallo, ich habe das Neueste vor ein paar Tagen heruntergeladen, Bedeutet das, dass dieser Patch nicht enthalten ist? – securecurve

+0

Wenn es neuer als 3.0.4 ist, denke ich, es sollte enthalten sein ... –

Antwort

4

Das der Punkt.

Die Bildung einer Kette bedeutet, dass Ihre Subtasks irgendeine Art von Serienabhängigkeit haben: Jede einzelne macht nur Sinn, wenn die vorherige ausgeführt wurde. Ohne dies würden Sie einfach in der Warteschlange oder verwenden Sie eine Gruppe und nicht eine Kette.

Wenn also eine Teilaufgabe fehlschlägt (und immer noch fehlschlägt, nachdem alle Wiederholungen versucht wurden), schlägt die Kette fehl.

Ich gebe gerne zu, dass the documentation (wie Sellerie 3.1.18) weit von explizit in dieser Hinsicht, aber der Name schon sagt diese Semantik: „Eine Kette ist nur so stark wie ihr schwächstes Glied“

+0

Guter Punkt :) .. und ich stimme Ihnen zu, dass es einige unscharfe Punkte in der Dokumentation gibt – securecurve

Verwandte Themen