Celery es una implementación de colas de tareas para aplicaciones web en Python que se utiliza para ejecutar trabajos de forma asíncrona fuera del ciclo de petición-respuesta HTTP.

Celery es una implementación del concepto de cola de tareas. Aprenda más en el capítulo de desarrollo web o vea la tabla de contenidos para todos los temas.

¿Por qué es útil Celery?

Las colas de tareas y la implementación de Celery en particular son una de las partes más difíciles de entender de una pila de aplicaciones web de Python.

Si usted es un desarrollador junior puede ser poco claro por qué mover los entrenamientos fuera del ciclo de solicitud-respuesta HTTP es importante. En resumen, quieres que tu servidor WSGI responda a las peticiones entrantes lo más rápido posible porque cada petición ata a un proceso trabajador hasta que la respuesta está terminada. Desplazar el trabajo de esos trabajadores mediante la creación de trabajos asíncronos como tareas en una cola es una forma directa de mejorar los tiempos de respuesta del servidor WSGI.

¿Cuál es la diferencia entre Celeryd y Celerybeat?

Celery se puede utilizar para ejecutar trabajos por lotes en el fondo en un horario regular. Un concepto clave en Celery es la diferencia entre el demonio de Celery (celeryd), que ejecuta tareas, y Celerybeat, que es un programador. Piensa en Celeryd como un conjunto de uno o más trabajadores que se encargan de cualquier tarea que les pongas por delante. Cada trabajador llevará a cabo una tarea y cuando la tarea se ha completado recogerá la siguiente.El ciclo se repetirá continuamente, sólo esperando ociosamente cuando no hay más tareas para poner delante de ellos.

Celerybeat por otro lado es como un jefe que lleva la cuenta de cuando las tareas deben ser ejecutadas. Su aplicación puede decirle a Celerybeat que ejecute una tarea en intervalos de tiempo, como cada 5 segundos o una vez a la semana. Celerybeat también puede ser instruido para ejecutar tareas en una fecha u hora específica, como las 5:03 p.m. cada domingo. Cuando se alcanza el intervalo o la hora específica, Celerybeat entregará el trabajo a Celeryd para que se ejecute en el siguiente trabajador disponible.

Tutoriales y consejos sobre Celery

Celery es una poderosa herramienta que puede ser difícil de entender al principio. Asegúrese de leer sobre los conceptos de cola de tareasy luego sumergirse en estos tutoriales específicos de Celery.

  • Una introducción de 4 minutos a Celery es un breve screencast de introducción a la cola de tareas.

  • Esta serie de entradas de blog sobre la arquitectura de Celery, Celery in the wild: tips and tricks to run async tasks in the real worldydealing with resource-consuming tasks on Celeryproporcionan un gran contexto sobre cómo funciona Celery y cómo manejar algunas de las partes más difíciles de trabajar con la cola de tareas.

  • Cómo usar Celery con RabbitMQes un recorrido detallado para usar estas herramientas en un VPS de Ubuntu.

  • Celery – Mejores Prácticasexplica las cosas que no debes hacer con Celery y muestra algunas características infrautilizadas para hacer que las colas de tareas sean más fáciles de trabajar.

  • Mejores prácticas de Celeryes un seguimiento del autor de la publicación anterior sobre mejores prácticas que se basa en algunos de sus propios aprendizajes de más de 3 años usando Celery.

  • Asuntos comunes en el uso de Celery (y otras colas de tareas)contiene buenos consejos sobre los errores que se deben evitar en la configuración de las tareas, como el uso de transacciones de la base de datos y el reintento de tareas fallidas.

  • Procesamiento asíncrono en aplicaciones web, primera y segunda parte, son excelentes lecturas para entender la diferencia entre una cola de tareas y por qué no debe usar su base de datos como tal.

  • Mis experiencias con un microproceso de larga duración basado en Celeryofrece algunos buenos consejos basados en la experiencia con trabajadores de Celery que tardan mucho en completar sus trabajos.

  • Checklist to build great Celery async taskses un sitio diseñado específicamente para ofrecerte una lista de buenas prácticas a seguir mientras diseñas la configuración de tu cola de tareas y la despliegas en entornos de desarrollo, preparación y producción.

  • Heroku escribió sobre cómo asegurar Celery cuando las tareas se envían a través de redes no encriptadas.

  • Las pruebas de unidad de las tareas de Celeryexplican tres estrategias para probar el código dentro de las funciones que ejecuta Celery. El post concluye que llamar a las tareas de Celery de forma sincrónica para probarlas es la mejor estrategia sin ningún inconveniente. Sin embargo, hay que tener en cuenta que cualquier método de prueba que no coincida con la forma en que la función se ejecutará en un entorno de producción puede dar lugar a errores que se pasen por alto. También hay un repositorio Git de código abierto con todo el código fuente del post.

  • La monitorización de Celery con Rollbar en una aplicación Django explica cómo usar Rollbar para monitorizar tareas. Superútil cuando los trabajadores invariablemente mueren sin razón aparente.

  • 3 Gotchas para trabajar con Celeryson cosas a tener en cuenta cuando eres nuevo en la implementación de la cola de tareas de Celery.

  • Dask y Celerycompara Dask.distributed con Celery para proyectos de Python. El post da ejemplos de código para mostrar cómo ejecutar tareas con cualquiera de las dos colas de tareas.

  • Python+Celery: Encadenamiento de tareas… explica que las tareas de Celery deben depender unas de otras usando cadenas deCelery, no dependencias directas entre tareas.

Celery con frameworks web

Celery se usa normalmente con un framework web comoDjango, Flask o Pyramid.Estos recursos muestran cómo integrar la cola de tareas Celery con el framework web de su elección.

  • Cómo usar Celery y RabbitMQ con Djangoes un gran tutorial que muestra cómo instalar y configurar una tarea básica con Django.

  • Miguel Grinberg escribió un buen post sobre el uso de la cola de tareas Celery con Flask.

  • Setting up an asynchronous task queue for Django using Celery and Redisis a straightforward tutorial for setting up the Celery task queue forDjango web applications using the Redis broker on the back end.

  • A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshows you how to usedjango-celeryin your application. Ten en cuenta, sin embargo, que hay otras formas de integrarCelery con Django que no requieren la dependencia django-celery.

  • Tareas asíncronas en segundo plano con Celery y Redisccombina Celery con Redis como broker yFlask para el framework de la aplicación de ejemplo.

  • Celery y Django y Docker: Oh My!muestra cómo crear tareas Celery para Django dentro de un Dockercontainer. También proporciona algunas

  • Tareas asíncronas con Django y Celerys muestra cómo integrar Celery con Django y crear tareas periódicas.

  • Cómo empezar a programar tareas con Celeryes un recorrido detallado para configurar Celery con Django (aunqueCelery también se puede utilizar sin problema con otros frameworks).

  • Introducción a Celery para Python+Djangoproporciona una introducción a la cola de tareas de Celery con Django como el marco de trabajo previsto para la construcción de una aplicación web.

  • Tareas asíncronas con Falcon y Celeryconfigura Celery con el marco de trabajo Falcon, que es menos comúnmente utilizado en los tutoriales web.

  • Custom Celery task stateses un post avanzado sobre la creación de estados personalizados, que es especialmente útil para los estados transitorios en su aplicación que no están cubiertos por la configuración predeterminada de Celery.

  • Tareas asíncronas con Django y Celery mira cómo configurar Celery para manejar tareas de larga duración en una aplicación Django.

Recursos de despliegue de Celery

Celery y su broker se ejecutan por separado de sus servidores web y WSGI por lo que añade cierta complejidad adicional a sus despliegues. Los siguientes recursos le guían a través de cómo manejar los despliegues y obtener los ajustes de configuración adecuados en su lugar.

  • La serie «Django en la producción» porRob Golding contiene un post específicamente en las tareas de fondo.

  • ¿Cómo ejecutar Celery como un demonio?es un breve post con el código mínimo para ejecutar el demonio Celery yCelerybeat como servicios del sistema en Linux.

  • Celery en Producción en el blog del Grupo Caktus contiene buenas prácticas de su experiencia en el uso de Celery con RabbitMQ, herramientas de monitorización y otros aspectos que no suelen ser discutidos en la documentación existente.

  • Tres consejos rápidos de dos años con Celeryproporciona algunos consejos sólidos sobre los retrasos de reintento, la bandera -Ofair y los tiempos de espera de las tareas globales para Celery.

admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

lg