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.