2017-12-22 14 views
0

Ich habe den folgenden CodeDjango Sellerie aktuelle Aufgabe mit ausgefallenen Daten wiederholt gesetzt nur

from utils import SendSMS 
from celery.exceptions import * 


@celery.task(bind=True, max_retries=3) 
def send_sms(self,sms_list): 
    failed_items = [] 
    for sms_item in sms_list: 
     status = SendSMS(**sms_item) 
     if status in ['Timeout','Error']: 
      failed_items.append(sms_item) 

    if len(failed_items) > 0: 
     raise self.retry(failed_items) 

    return "sms(s) send successfully." 

ich die Aufgabe erneut zu versuchen will, aber mit unterschiedlichen Datensatz, mit nur Elemente fehlgeschlagen.

Ich meine, wie kann ich diese Zeile erreicht werden:

raise self.retry(failed_items) ? 

Vielen Dank im Voraus.

+0

Welche Fehler erhalten Sie, wenn Sie versuchen, über den Code auszuführen? –

+0

Es heißt "Retry in 180s" –

Antwort

0
@celery.task(bind=True, max_retries=2) 
def send_sms(self,**kwargs): 
    sms_list = kwargs.get("sms_list",[]) 
    failed_items = [] 
    for sms_item in sms_list: 
     status = SendSMS(**sms_item) 
     if status in ['Timeout','Error']: 
      failed_items.append(sms_item) 

    if len(failed_items) > 0: 
     exc = Exception(status) 
     raise self.retry(exc=exc, sms_list=failed_items) 

    return "sms(s) send successfully." 
+0

Sie haben sich Mühe gegeben, mein Rat ist, immer das Problem zu erklären und wie Sie es in Ihrer Antwort gelöst haben, siehe [StackOverFlow Wie schreibe ich eine gute Antwort?] (Https: // stackoverflow. com/hilfe/how-to-antwort) –

3
@task() 
def add(self, x, y): 
    if not x or not y: 
     try: 
      raise Exception("test error") 
     except Exception, e: 
      add.retry(args=[x, y], exc=e, countdown=30) 
    return x+y 
Verwandte Themen