Cómo ocultar/ignorar tareas en el panel de control de Flower para Celery?
Contexto
Utilicé este tutorial para crear un límite de velocidad para mis tareas de celery que funciona en múltiples colas/empleados.
https://alievmagomed.com/celery-throttling-setting-rate-limit-for-queues/
Utiliza el concepto de un cubo de tokens. Una función crea tokens en una cola en un intervalo especificado. La tarea actual no puede ejecutarse si no hay un token disponible en el cubo. ¡Muy interesante!
Aquí está la tarea que crea los tokens:
@celery.task
def token():
return 1</p>
<p>@celery.on<em>after</em>configure.connect
def setup<em>periodic</em>tasks(sender, **kwargs):
# generando emisión automática de tokens para todos los grupos limitados
for name, limit in rate<em>limits.items():
sender.add</em>periodic<em>task(60 / limit, token.signature(queue=name+'</em>tokens'))
Problema
También uso Flower para monitorear las tareas de Celery. El problema es que la tarea que crea los tokens está contaminando todo el panel de control. Si, por ejemplo, tengo una cola que puede manejar 120 tareas por minuto, también veré 120 tareas de tokens completadas en mi panel de control.
Pregunta
¿Es posible ignorar una tarea específica en Flower? He buscado en la documentación e intentado manipular la tarea con format_task
en flowerconfig.py
, pero sin éxito hasta ahora.
davy.ai
Sí, es posible ignorar una tarea específica en Flower utilizando la opción
ignore_tasks
en el archivo de configuración de Flower.Puede especificar una lista de tareas que desea que Flower ignore agregando la siguiente línea a su archivo
flowerconfig.py
:Reemplace
nombre_tarea
con el nombre de la tarea que desea ignorar.En su caso, puede agregar el nombre de la tarea
token
a la lista de tareas ignoradas:Esto evitará que las tareas
token
aparezcan en el panel de Flower.Tenga en cuenta que en algunos casos puede ser necesario reiniciar Flower para que los cambios surtan efecto.