Uso celery
en mi aplicación para ejecutar tareas periódicas. Veamos ejemplo sencillo continuaciónDevolución de llamada para apio 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
Como se puede ver en el ejemplo anterior, yo uso celery
para ejecutar la tarea asíncrona, pero (ya que es una cola) que tengo que hacer queue.fail(uid)
en caso de excepción en do_stuff
o queue.ack(uid)
lo contrario . En esta situación, sería muy claro y útil tener alguna devolución de llamada de mi tarea en ambos casos: on_failure
y on_success
.
vi algunas documentation, pero nunca había visto las prácticas de uso de las devoluciones de llamada con apply_async
. ¿Es posible hacer eso?