En développement, c'est un peu compliqué d'exécuter le celeryd
ainsi que le serveur de développement Django. Est-il possible, par exemple, de demander celery
pour exécuter des tâches de manière synchrone pendant le développement? Ou quelque chose de similaire?Vous développez avec Django + Celery sans exécuter `celeryd`?
Répondre
Oui, vous pouvez le faire en réglant CELERY_ALWAYS_EAGER = True
dans vos paramètres.
http://docs.celeryproject.org/en/latest/configuration.html#task-execution-settings
Il y a aussi un coureur de test Django personnalisé dans django-céleri qui aide à CELERY_ALWAYS_EAGER. En savoir plus sur l'utilisation de Celery avec Django au the docs.
Dans la version 4.0
du paramètre Céleri CELERY_ALWAYS_EAGER
a été remplacé par CELERY_TASK_ALWAYS_EAGER
dans Django settings.py
ou task_always_eager
en mode natif dans celery conf
. Puisque les nombreux changements dans la configuration du céleri de la version 3.x à la version 4.x sont répartis sur plusieurs lignes, je suggère d'utiliser l'outil de migration des paramètres intégrés.
celery upgrade settings --django
source:
Heureusement, vous ne devez pas changer manuellement les fichiers, comme les céleris paramètres de mise à niveau programme --django devrait faire la bonne chose.
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#step-4-upgrade-to-celery-4-0
Cette méthode est douloureusement parfois lent. Des problèmes connus? – Mikhail
Très probablement, il est lent car il exécute les tâches de manière synchrone (comme vous le souhaitez) et elles sont lentes. –