Rückruf für Sellerie apply_async
Benutze ich celery
in meiner Anwendung zur Ausführung periodischer Aufgaben. Mal sehen, einfache Beispiel unten
from myqueue import Queue
@perodic_task(run_every=timedelta(minutes=1))
def process_queue():
queue = Queue()
uid, questions = queue.pop()
if uid is None:
return
job = group(do_stuff(q) for q in questions)
job.apply_async()
def do_stuff(question):
try:
...
except:
...
raise
Wie Sie sehen können in dem obigen Beispiel, ich benutze celery
laufen async task, aber (da es eine Warteschlange) ich muss queue.fail(uid)
im Fall der Ausnahme, die in do_stuff
oder queue.ack(uid)
sonst. In dieser situation wäre es sehr klar und nützlich, um einige callback meine Aufgabe in beiden Fällen - on_failure
und on_success
.
Sah ich einige Dokumentation, aber noch nie gesehen Praktiken der Verwendung von callbacks mit apply_async
. Ist es möglich das zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterklasse der Task-Klasse und überlastung der on_success und on_failure Funktionen:
Können Sie angeben, success-und error-callbacks über den link und link_err kwargs, wenn Sie anrufen apply_async. Die Sellerie-docs gehören ein klares Beispiel: http://docs.celeryproject.org/en/latest/userguide/calling.html#linking-callbacks-errbacks