Comment stocker le résultat d'un retard appel à l'aide de céleri dans une vue django?
Question
a suivi les directives passe dans http : //celeryq.org/docs/django-celery/getting-started/first-steps-with-django.html et a créé une vue qui appelle ma méthode de test dans tasks.py:
import time
from celery.decorators import task
@task()
def add(x, y):
time.sleep(10)
return x + y
Mais si mon add-méthode prend beaucoup de temps pour répondre, comment puis-je stocker le résultat objet je suis arrivé lors de l'appel add.delay (1,2) et l'utiliser pour vérifier les progrès / succès / résultat en utilisant obtenir plus tard ?
La solution
Vous avez seulement besoin de la tâche id:
result = add.delay(2, 2)
result.task_id
Avec cela, vous pouvez demander l'état de la tâche (par exemple en utilisant AJAX) Django-céleri est livré avec une vue qui renvoie les résultats et la situation en JSON: http://celeryq.org/docs/django-celery/reference/ djcelery.views.html