2017-01-13 3 views
0

J'ai mis Celery dans mon application Django afin que les deux autres programmes python puissent traiter l'entrée de mon application Django en faisant une méthode de sous-processus. Ma question est comment puis-je accéder à la sortie du sous-processus? À l'époque, quand je faisais juste un programme python, j'accédais aux fichiers journaux (sortie des deux applications) via stdout et stderr. Est-ce la même chose quand j'utilise Céleri dans Django? Est-ce que la valeur de CELERY_RESULT_BACKEND (si je devrais attribuer la base de données de mon application Django ici) est affectée par les fichiers journaux?Accéder au sous-processus stdout et stderr de Celery dans mon application Django

Jusqu'à présent, ce que je l'ai fait est:

  1. Accédez aux deux applications via subprocess dans mon tasks.py

  2. J'affecté mon courtier de db, Redis, comme mon db maintenant CELERY_RESULT_BACKEND. Mon plan est d'obtenir les fichiers journaux, puis les enregistrer dans la base de données de mon application Django afin que je puisse simplement accéder à cette base de données.

Pouvez-vous offrir de l'aide?

Répondre

0

Généralement, vous vous souciez uniquement du résultat de la tâche, qui est la valeur de retour de la tâche de céleri, et qui est stocké dans votre result_backend pendant au moins result_expires (généralement 1 jour). Ainsi, dans la mesure où vous souhaitez accéder au résultat d'une tâche particulière, vous pouvez simplement le faire en utilisant l'ID de tâche.

+0

Eh bien, les valeurs de retour sont là. Si vous cherchez des instructions de débogage et quand la tâche a été reçue et similaire, vous ne pouvez pas obtenir cette information. Mais vous pouvez accéder aux métadonnées Résultat/Tâche et à la valeur de retour Tâche. – 2ps

+0

Ah, d'accord, je comprends maintenant. Si cela ne fonctionne pas, peut-être que je peux contrôler la valeur de stdout et stderr. : D Merci! – sparklights

+0

** J'ai supprimé mon premier commentaire, désolé, n'a pas vu votre réponse avant. Merci pour votre réponse! – sparklights