Ich verwende celery
in meiner Anwendung, um periodische Aufgaben auszuführen. Lassen Sie uns einfach folgende BeispielRückruf für Sellerie apply_async
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
siehe Wie Sie im obigen Beispiel sehen können, verwende ich celery
async Aufgabe zu laufen, aber (da es eine Warteschlange ist) muss ich queue.fail(uid)
bei Ausnahme in do_stuff
oder queue.ack(uid)
sonst tun . In dieser Situation wäre es sehr klar und nützlich, in beiden Fällen einen Rückruf von meiner Aufgabe zu erhalten - on_failure
und on_success
.
Ich sah einige documentation, aber nie Praktiken der Verwendung von Callbacks mit apply_async
gesehen. Ist es möglich, das zu tun?