Io uso celery
nella mia applicazione per eseguire attività periodiche. Vediamo semplice esempio di seguitoChiamata per sedano 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
Come si può vedere nell'esempio qui sopra, io uso celery
per eseguire operazione asincrona, ma (dato che è una coda) ho bisogno di fare queue.fail(uid)
in caso di eccezioni in do_stuff
o queue.ack(uid)
altrimenti . In questa situazione sarebbe molto chiaro e utile avere qualche richiamata dal mio compito in entrambi i casi: on_failure
e on_success
.
Ho visto alcuni documentation, ma mai visto pratiche di utilizzo di callback con apply_async
. è possibile farlo?