Celery almacena los resultados de las tareas en el backend después de que se ejecutan, y si permanecen allí durante largo tiempo, pueden ocupar espacio en el almacenamiento y afectar el rendimiento. Django-celery-beat y Celery ofrecen opciones para limpiar los datos del backend de diferentes maneras para abordar este problema. En este artículo, exploraremos la configuración CELERY_TASK_RESULT_EXPIRES
y la tarea celery.backend_cleanup
de Django-celery-beat, así como las recomendaciones de uso para ambas configuraciones.
1. CELERY_TASK_RESULT_EXPIRES
: opción para establecer el tiempo de validez de los resultados de las tareas
CELERY_TASK_RESULT_EXPIRES
es una opción que establece cuánto tiempo permanecerán los resultados de tareas individuales en el backend, en segundos. Esta configuración funciona como un TTL (Time-To-Live) cuando se programa una tarea de Celery en el backend, lo que permite que los resultados de tareas se eliminen automáticamente después de un tiempo específico.
- Ejemplo de configuración:
CELERY_TASK_RESULT_EXPIRES = 86400 # 24 horas (en segundos)
- Con esta configuración, los resultados de las tareas se eliminarán automáticamente en el backend después de 24 horas. La configuración de TTL es útil cuando se desea ajustar el tiempo de validez de cada tarea y evitar que se acumulen datos innecesarios en el backend.
2. celery.backend_cleanup
de Django-celery-beat: tarea de limpieza periódica
Si utiliza Django-celery-beat, la tarea celery.backend_cleanup
limpieza periódica de los resultados de tareas antiguos acumulados en el backend. Esta tarea de limpieza está programada para ejecutarse una vez al día como predeterminado, y puedes ajustar la periodicidad en el Django Admin para que se ejecute con más o menos frecuencia. La tarea de limpieza periódica previene automáticamente la acumulación de datos antiguos en el backend incluso sin la configuración de TTL.
- Ejemplo de configuración de periodicidad: En Django Admin, puedes ajustar la periodicidad de
celery.backend_cleanup
para mantenerla corta si hay muchos datos en tiempo real, o mantener el valor predeterminado (un día) si no es así.
3. Conclusión: ¿qué configuración elegir?
Las configuraciones CELERY_TASK_RESULT_EXPIRES
y celery.backend_cleanup
tienen funciones superpuestas, por lo que basta con usar una de las dos para gestionar adecuadamente la memoria del backend. Sin embargo, también puedes activar ambas configuraciones según tus necesidades.
- Si usas Django-celery-beat: la tarea
celery.backend_cleanup
limpiará periódicamente el backend, por lo que principalmente es suficiente programar esta tarea de limpieza y no establecer la configuración de TTL. - Si programas tareas de Celery con código: si no estás usando Django-celery-beat y has escrito código para programar tareas, se recomienda configurar
CELERY_TASK_RESULT_EXPIRES
para gestionar el TTL. De este modo, los resultados de cada tarea se eliminarán automáticamente después del tiempo configurado y se gestionará eficientemente la memoria del backend.
Resumen: es posible gestionar el backend con una sola de las configuraciones de tarea de limpieza de Django-celery-beat o TTL; para los usuarios de Django-celery-beat, la programación de la tarea de limpieza es adecuada, mientras que para quienes programan con código, se recomienda establecer TTL. También se pueden combinar ambas configuraciones para una gestión de datos más detallada.

Add a New Comment