Je voudrais créer une tâche périodique pour le céleri en utilisant l'interface d'administration django-celery. J'ai une tâche configurée qui fonctionne bien lorsqu'elle est appelée manuellement ou par script. Il ne fonctionne tout simplement pas à travers celerybeat. Selon les journaux de débogage, la tâche est définie sur enabled = False
lors de la première récupération et je me demande pourquoi.celerybeat désactive automatiquement la tâche périodique
Lors de l'ajout de la tâche périodique et de l'envoi de [1, False]
en tant qu'arguments positionnels, la tâche est automatiquement désactivée et aucune autre sortie ne s'affiche. Lorsqu'elle est ajoutée sans arguments, la tâche est exécutée mais déclenche une exception instantanément car je n'ai pas fourni les arguments nécessaires (ce qui est logique).
Quelqu'un voit-il quel est le problème ici?
Merci d'avance.
C'est la sortie après arguments fournissant:
[DEBUG/Beat] SELECT "djcelery_periodictask"."id", [...]
FROM "djcelery_periodictask"
WHERE "djcelery_periodictask"."enabled" = true ; args=(True,)
[DEBUG/Beat] SELECT "djcelery_intervalschedule"."id", [...]
FROM "djcelery_intervalschedule"
WHERE "djcelery_intervalschedule"."id" = 3 ; args=(3,)
[DEBUG/Beat] SELECT (1) AS "a"
FROM "djcelery_periodictask"
WHERE "djcelery_periodictask"."id" = 3 LIMIT 1; args=(3,)
[DEBUG/Beat] UPDATE "djcelery_periodictask"
SET "name" = E'<taskname>', "task" = E'<task.module.path>',
"interval_id" = 3, "crontab_id" = NULL,
"args" = E'[1, False,]', "kwargs" = E'{}', "queue" = NULL,
"exchange" = NULL, "routing_key" = NULL,
"expires" = NULL, "enabled" = false,
"last_run_at" = E'2011-05-25 00:45:23.242387', "total_run_count" = 9,
"date_changed" = E'2011-05-25 09:28:06.201148'
WHERE "djcelery_periodictask"."id" = 3;
args=(
u'<periodic-task-name>', u'<task.module.path>',
3, u'[1, False,]', u'{}',
False, u'2011-05-25 00:45:23.242387', 9,
u'2011-05-25 09:28:06.201148', 3
)
[DEBUG/Beat] Current schedule:
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) {<crontab: 0 4 * (m/h/d)>}
[DEBUG/Beat] Celerybeat: Waking up in 5.00 seconds.
EDIT: Il fonctionne avec le paramètre suivant. Je n'ai toujours aucune idée pourquoi cela ne fonctionne pas avec django-celery.
CELERYBEAT_SCHEDULE = {
"example": {
"task": "<task.module.path>",
"schedule": crontab(),
"args": (1, False)
},
}
Pouvez-vous poster votre tâche et configuration periodictask? –
Merci d'avoir vu mon problème. Je n'ai pas défini 'CELERYBEAT_SCHEDULE' parce que j'ai utilisé l'administration de django-celery à la place. J'ai également vérifié la [FAQ] (http://docs.celeryproject.org/en/latest/faq.html#why-won-t-my-task-run) mais comme je l'ai dit dans l'article original, je suis capable de lancer la tâche depuis le shell manuellement. Y a-t-il autre chose que j'aurais pu ignorer? – jnns
Avoir exactement le même problème ... Des solutions? – Aldarund