Me gustaría crear una tarea periódica para el apio usando interfaz de administración de django-apio. Tengo una tarea configurada que funciona muy bien cuando se llama manualmente o por script. Simplemente no funciona a través de celerybeat. De acuerdo con los registros de depuración, la tarea se establece en enabled = False
en la primera recuperación y me pregunto por qué.celerybeat deshabilita automáticamente la tarea periódica
Al agregar la tarea periódica y pasar [1, False]
como argumentos posicionales, la tarea se desactiva automáticamente y no veo ningún resultado adicional. Cuando se agrega sin argumentos, la tarea se ejecuta pero genera una excepción al instante porque no proporcioné los argumentos necesarios (tiene sentido).
¿Alguien ve cuál es el problema aquí?
Gracias de antemano.
Ésta es la salida después de que suministran argumentos:
[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: Funciona con la siguiente configuración. Todavía no tengo idea de por qué no funciona con django-apio.
CELERYBEAT_SCHEDULE = {
"example": {
"task": "<task.module.path>",
"schedule": crontab(),
"args": (1, False)
},
}
Se puede publicar la configuración de la tarea y periodictask? –
Gracias por ver mi problema. No configuré 'CELERYBEAT_SCHEDULE' porque en su lugar usé la administración de django-apio. También revisé las [preguntas frecuentes] (http://docs.celeryproject.org/en/latest/faq.html#why-won-t-my-task-run) pero como dije en la publicación original, estoy capaz de lanzar la tarea desde el caparazón manualmente. ¿Hay algo más que podría haber pasado por alto? – jnns
Tienen exactamente el mismo problema ... ¿Alguna solución? – Aldarund