2011-07-18 3 views
11

Comment une tâche Celery peut-elle accéder à l'API d'abstraction de la base de données Django? Est-ce que cela doit être codé à partir de zéro en utilisant l'une des stratégies pour l'utilisation autonome de Django ORM, ou y a-t-il une méthode intégrée ou rationalisée plus intégrée?Utilisation de l'ORM de Django dans une tâche de céleri

Il semble que personne ne pose cette question. Cependant, pour moi, c'est fondamental.

Cette example implique que ce n'est pas grave, mais quelqu'un peut-il expliquer comment fonctionne la gestion de session et ORM scoping entre Celery et Django?

Répondre

0

Vous voulez probablement jeter un oeil à django-celery. Lorsque vous travaillez comme une tâche de céleri, vous voulez passer tous les détails à céleri, par exemple pour envoyer un email, vous passeriez des valeurs pour "de", "à", "sujet", et "corps".

Si vous souhaitez ensuite informer l'utilisateur de l'action en cours, vous voudrez probablement regarder quelque chose comme le messages framework dans Django.

J'espère que cela aide.

+0

Le django-céleri n'est plus requis. http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html – kev

+0

@ user1252307 n'est plus requis si vous ne voulez pas accéder à la base de données. – Gocht

5

Par défaut, Celery choisit ses paramètres de tâche. Les instances de modèle Django peuvent également être décapées. Le problème est que le décapage d'une instance de modèle est comme prendre un instantané à ce moment-là. Unpickling ne touche pas la base de données.

Que ce soit bon ou mauvais dépend, je suppose, de vos besoins. J'ai tendance à envoyer une clé primaire dans mes tâches et à re-interroger l'objet en question.

Questions connexes