2016-10-10 2 views
0

Ich möchte retry (official doc) eine Aufgabe, wenn es eine Ausnahme auslöst. Sellerie ermöglicht dies mit der retry in Form von self.retry(...)Sellerie send_task und versuchen Sie erneut auf Ausnahme

Jetzt kann ich nicht herausfinden, wie Benutzer self, da ich eine Funktion ohne Klasse habe.

Mein Code ist dies

.. imports ... 
app = Celery('elasticcelery') 
@app.task(name='rm_doc') 
def rm_doc(schema_id, id): 
    es = Elasticsearch(es_ip) 
    try: 
     res = es.delete(schema_id, 'doc', id) 
    except NotFoundError as e: 
     <here goes the retry> 

und von einem anderen Dienst auf diese Weise genannt:

app_celery = Celery('celeryelastic') 
       app_celery.config_from_object('django.conf:settings') 
       app_celery.send_task('rm_doc', kwargs={"schema_id": schema_id, "id": document_id},) 

jetzt, soll ich die self.retry hinzufügen, aber es gibt keine self in meiner Methode.

Wie soll ich fortfahren?

PS: Ich habe versucht, self als Parmeter hinzufügen, aber dies schlägt fehl, da es keine Zuordnung gibt, wenn die Aufgabe zum ersten Mal von der Fernbedienung aufgerufen wird.

Antwort

0

Ich habe bind=True in der Anmerkung der Methode vergessen, jetzt kann ich self hinzufügen.

Verwandte Themen