La fonction de rappel pour le céleri apply_async
- Je utiliser celery
dans mon application pour exécuter les tâches périodiques. Nous allons voir l'exemple simple ci-dessous
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
Comme vous pouvez le voir dans l'exemple ci-dessus, j'utilise celery
à exécution asynchrone de la tâche, mais (car il est une file d'attente) j'ai besoin de faire queue.fail(uid)
en cas d'exception dans do_stuff
ou queue.ack(uid)
autrement. Dans cette situation, il serait très clair et très utile d'avoir quelques rappel de ma tâche dans les deux cas - on_failure
et on_success
.
J'ai vu quelques la documentation, mais jamais vu des pratiques d'utilisation des rappels avec apply_async
. Est-il possible de faire cela?
OriginalL'auteur gakhov | 2012-09-21
Vous devez vous connecter pour publier un commentaire.
Sous-classe de la classe de Tâche et de surcharge du on_success et on_failure fonctions:
OriginalL'auteur Douwe van der Meij
Vous pouvez spécifier d'erreur et de réussite des rappels via le lien et link_err kwargs lorsque vous appelez apply_async. Le céleri docs inclure un exemple clair: http://docs.celeryproject.org/en/latest/userguide/calling.html#linking-callbacks-errbacks
OriginalL'auteur sussudio