Je suis le tutoriel sur here pour obtenir les tâches périodiques définies dans mon projet django.Django-Celery: importation d'une autre application dans le fichier célery.py du projet
L'article suggère d'avoir un fichier celery.py
de la forme:
from celery import Celery
from celery.schedules import crontab
app = Celery()
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
# Calls test('hello') every 10 seconds.
sender.add_periodic_task(10.0, my_task.s('hello'), name='add every 10')
)
@app.task
def my_task(arg):
print(arg)
qui fonctionne. Maintenant c'est bien mais je ne veux pas définir mes tâches localement. Ma question est, comment puis-je ajouter des tâches à partir d'autres applications? J'ai créé un projet vide appelé my_proj
et il a deux applications: my_proj
et app_with_tasks
. le fichier celery.py
ci-dessus est au niveau racine dans le répertoire de l'applicationet je souhaite ajouter des tâches périodiques à partir du fichier tasks.py
de app_with_tasks
.
J'ai app_with_tasks
répertoriés dans des applications installées dans le fichier de paramètres pour my_proj
mais je ne peux toujours pas à importer quoi que ce soit à partir d'une application à anthères.
je crois comprendre que je devrais utiliser:
from app_with_tasks.tasks import task1
mais my_proj
montrera ensuite référence non résolue dans PyCharm.
Quelle est la commande que vous utilisez pour démarrer le serveur/démon céleri? – jperelli
'celery -A my_proj beat', mais je n'y suis pas encore. Je crois que j'ai manqué une étape triviale car nulle part dans mes fichiers de projet je ne peux faire une importation de quelque chose à partir de l'application 'app_with_tasks'. – ShS