¿Cómo puedo eliminar todas las tareas pendientes sin conocer el task_id
de cada tarea?
task
rabbitmq
celery
celery-task
nabizan
fuente
fuente
manage.py celery purge
(celeryctl
ahora está en desuso y desaparecerá en 3.1).redis-cli KEYS "celery*" | xargs redis-cli DEL
que funcionó para mí. Esto eliminará todas las tareas almacenadas en el backend de redis que está utilizando.celery purge
(dentro del entorno virtual relevante). Ooops: hay una respuesta con la misma a continuación ..... stackoverflow.com/a/20404976/1213425-A
es la aplicación Django dondecelery.py
se encuentra.Para el apio 3.0+:
Para purgar una cola específica:
fuente
celery -A proj purge
.Para apio 2.xy 3.x:
Cuando se utiliza el trabajador con el parámetro -Q para definir colas, por ejemplo
entonces
celery purge
no funcionará, porque no puede pasarle los parámetros de la cola. Solo eliminará la cola predeterminada. La solución es comenzar a sus trabajadores con--purge
parámetros como este:Sin embargo, esto ejecutará al trabajador.
Otra opción es usar el subcomando amqp de apio
fuente
En apio 3+:
CLI:
Programaticamente:
http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
fuente
Descubrí que
celery purge
no funciona para mi configuración de apio más compleja. Utilizo múltiples colas con nombre para diferentes propósitos:La primera columna es el nombre de la cola, la segunda es la cantidad de mensajes que esperan en la cola y la tercera es la cantidad de oyentes para esa cola. Las colas son:
La tarea de análisis es una tarea de fuerza bruta que funcionó muy bien en pequeños conjuntos de datos, pero ahora tarda más de 24 horas en procesarse. Ocasionalmente, algo saldrá mal y se quedará atascado esperando en la base de datos. Debe reescribirse, pero hasta entonces, cuando se atasca, finalizo la tarea, vacío la cola e intento nuevamente. Detecto "estancamiento" mirando el recuento de mensajes para la cola de análisis, que debería ser 0 (análisis finalizado) o 1 (esperando que finalicen los análisis de la noche anterior). 2 o superior es malo, y recibo un correo electrónico.
celery purge
ofrece borrar tareas de una de las colas de transmisión, y no veo una opción para elegir una cola con nombre diferente.Aquí está mi proceso:
fuente
celeryctl purge
no funcionó con colas con nombre.python manage.py celery amqp queue.purge <queue_name>
hizo. Creo que el contexto es útil para aquellos con configuraciones complejas, por lo que pueden averiguar qué deben hacer siceleryctl purge
falla para ellos.manage.py
en mi Celery 3.1.17, ¿se ha eliminado el archivo o simplemente es nuevo? Sin embargo, encontré lo que parece la interfaz correspondiente (queue.purge
)*/bin/amqp.py
. Pero después de tratar de correlacionar el contenido del archivo con la documentación, debo admitir lamentablemente que Celery está lamentablemente indocumentado y también es un trabajo muy complicado, al menos juzgándolo por su código fuente.manage.py
es el script de administración de Django ymanage.py celery
ejecuta apio después de cargar la configuración desde la configuración de Django. No he usado apio fuera de Django, pero elcelery
comando incluido puede ser lo que está buscando: celery.readthedocs.org/en/latest/userguide/monitoring.htmlEn apio 3+
http://docs.celeryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks
CLI
Purgue la cola con nombre:
Purgar la cola configurada
Por lo tanto, para purgar toda la cola, los trabajadores deben ser detenidos.
fuente
Si desea eliminar todas las tareas pendientes y también las activas y reservadas para detener completamente Celery, esto es lo que funcionó para mí:
fuente
1. Para purgar adecuadamente la cola de tareas en espera, debe detener a todos los trabajadores ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- still-messages-left-in-the-queue ):
o (en caso de que RabbitMQ / Message Broker sea administrado por Supervisor):
2. ... y luego purga las tareas de una cola específica:
3. Inicie RabbitMQ:
o (en caso de que RabbitMQ sea administrado por Supervisor):
fuente
celery 4+ comando de purga de apio para purgar todas las colas de tareas configuradas
programáticamente:
toda la tarea pendiente será purgada. Referencia: celerydoc
fuente