Versión: | 5.5.0rc3 (inmunidad) |
---|---|
Web: | https://docs.celeryq.dev/en/stable/index.html |
Descargar: | https://pypi.org/project/celery/ |
Fuente: | https://github.com/celery/celery/ |
Palabras clave: | tarea, cola, trabajo, asíncrono, Rabbitmq, amqp, redis, pitón, distribuido, actores |
Este proyecto depende de sus generosas donaciones.
Si está utilizando Celery para crear un producto comercial, considere convertirse en nuestro patrocinador o patrocinador para garantizar el futuro de Celery.
Disponible como parte de la suscripción Tidelift.
Los mantenedores de celery
y miles de otros paquetes están trabajando con Tidelift para brindar soporte comercial y mantenimiento para las dependencias de código abierto que utiliza para crear sus aplicaciones. Ahorre tiempo, reduzca el riesgo y mejore la salud del código, mientras paga a los mantenedores de las dependencias exactas que utiliza. Obtenga más información.
Dragonfly es un reemplazo directo de Redis que reduce costos y aumenta el rendimiento. Diseñado para utilizar plenamente el poder del hardware de nube moderno y satisfacer las demandas de datos de las aplicaciones modernas, Dragonfly libera a los desarrolladores de los límites de los almacenes de datos tradicionales en memoria.
Las colas de tareas se utilizan como mecanismo para distribuir el trabajo entre subprocesos o máquinas.
La entrada de una cola de tareas es una unidad de trabajo, llamada tarea; los procesos de trabajo dedicados luego monitorean constantemente la cola para detectar nuevos trabajos a realizar.
Celery se comunica a través de mensajes, normalmente utilizando un intermediario para mediar entre clientes y trabajadores. Para iniciar una tarea, un cliente coloca un mensaje en la cola y luego el intermediario entrega el mensaje a un trabajador.
Un sistema Celery puede constar de múltiples trabajadores e intermediarios, dando paso a una alta disponibilidad y escalamiento horizontal.
Celery está escrito en Python, pero el protocolo se puede implementar en cualquier idioma. Además de Python, hay node-celery para Node.js, un cliente PHP, gocelery, gopher-celery para Go y rusty-celery para Rust.
La interoperabilidad del lenguaje también se puede lograr mediante el uso de webhooks de tal manera que el cliente ponga en cola una URL para que la solicite un trabajador.
La versión 5.5.x de Celery se ejecuta en:
Esta es la versión de apio que admitirá Python 3.8 o posterior.
Si está ejecutando una versión anterior de Python, debe ejecutar una versión anterior de Celery:
Celery es un proyecto con financiación mínima, por lo que no admitimos Microsoft Windows, pero debería estar funcionando. No abra ningún problema relacionado con esa plataforma.
El apio se suele utilizar con un intermediario de mensajes para enviar y recibir mensajes. Los transportes RabbitMQ y Redis tienen funciones completas, pero también hay soporte experimental para una gran cantidad de otras soluciones, incluido el uso de SQLite para el desarrollo local.
Celery puede ejecutarse en una sola máquina, en varias máquinas o incluso en varios centros de datos.
Si es la primera vez que intentas utilizar Celery, o eres nuevo en Celery v5.5.x proveniente de versiones anteriores, entonces deberías leer nuestros tutoriales de introducción:
Primeros pasos con el apio
Tutorial que le enseña lo mínimo necesario para comenzar con el apio.
Próximos pasos
Una descripción general más completa, que muestra más funciones.
También puede comenzar con Celery utilizando un transporte de intermediario alojado CloudAMQP. El mayor proveedor de alojamiento de RabbitMQ es un orgulloso patrocinador de Celery.
Simple
Celery es fácil de usar y mantener y no necesita archivos de configuración .
Tiene una comunidad activa y amigable con la que puede hablar para obtener ayuda, como en nuestra lista de correo o en el canal IRC.
Esta es una de las aplicaciones más simples que puedes hacer:
from celery import Celery app = Celery ( 'hello' , broker = 'amqp://guest@localhost//' ) @ app . task def hello (): return 'hello world'
Altamente disponible
Los trabajadores y los clientes volverán a intentarlo automáticamente en caso de pérdida o falla de la conexión, y algunos corredores admiten HA en forma de replicación Primaria/Primaria o Primaria/Réplica .
Rápido
Un solo proceso de Celery puede procesar millones de tareas por minuto, con una latencia de ida y vuelta de menos de milisegundos (usando RabbitMQ, py-librabbitmq y configuraciones optimizadas).
Flexible
Casi todas las partes de Celery se pueden ampliar o utilizar por sí solas: implementaciones de grupos personalizados, serializadores, esquemas de compresión, registros, programadores, consumidores, productores, transportes de intermediarios y mucho más.
Transportes de mensajes
- RabbitMQ, Redis, Amazon SQS, Google Pub/Sub
concurrencia
- Prefork, Eventlet, gevent, hilo único (
solo
)Almacenes de resultados
- AMQP, Redis
- memcached
- SQLAlquimia, Django ORM
- Apache Cassandra, IronCache, Elasticsearch
- Almacenamiento en la nube de Google
Publicación por entregas
- pepinillo , json , yaml , msgpack .
- zlib , compresión bzip2 .
- Firma de mensajes criptográficos.
Celery es fácil de integrar con frameworks web, algunos de los cuales incluso tienen paquetes de integración:
Django no es necesario Pirámide pirámide_apio Pilones pilones de apio Matraz no es necesario web2py web2py-apio Tornado tornado-apio API rápida no es necesario
Los paquetes de integración no son estrictamente necesarios, pero pueden facilitar el desarrollo y, a veces, agregan enlaces importantes como cerrar conexiones de bases de datos en fork
.
La documentación más reciente está alojada en Read The Docs y contiene guías de usuario, tutoriales y una referencia de API.
Puede instalar Celery a través del índice de paquetes de Python (PyPI) o desde la fuente.
Para instalar usando pip
:
$ pip instalar -U Apio
Celery también define un grupo de paquetes que se pueden usar para instalar Celery y las dependencias de una característica determinada.
Puede especificarlos en sus requisitos o en la línea de comandos pip
usando corchetes. Se pueden especificar varios paquetes separándolos por comas.
$ pip instalar "apio[redis]" $ pip instalar "apio[redis,auth,msgpack]"
Los siguientes paquetes están disponibles:
celery[auth] : | para usar el serializador de seguridad auth . |
---|---|
celery[msgpack] : | para usar el serializador msgpack. |
celery[yaml] : | para usar el serializador yaml. |
celery[eventlet] : | para usar el grupo eventlet . |
---|---|
celery[gevent] : | por usar el grupo gevent . |
celery[amqp] : | para usar la biblioteca Python RabbitMQ amqp. |
---|---|
celery[redis] : | para usar Redis como transporte de mensajes o como backend de resultados. |
celery[sqs] : | para utilizar Amazon SQS como transporte de mensajes. |
celery[tblib ]: | para usar la función |
celery[memcache] : | para usar Memcached como resultado backend (usando |
celery[pymemcache] : | para usar Memcached como resultado backend (implementación pura de Python). |
celery[cassandra] : | para usar Apache Cassandra/Astra DB como resultado backend con el controlador DataStax. |
celery[azureblockblob] : | para usar Azure Storage como resultado backend (usando |
celery[s3] : | para usar S3 Storage como resultado backend. |
celery[gcs] : | para usar Google Cloud Storage como resultado backend. |
celery[couchbase] : | para usar Couchbase como resultado backend. |
celery[arangodb] : | para usar ArangoDB como resultado backend. |
celery[elasticsearch] : | para usar Elasticsearch como backend de resultados. |
celery[riak] : | por usar Riak como resultado backend. |
celery[cosmosdbsql] : | para usar Azure Cosmos DB como resultado backend (usando |
celery[zookeeper] : | para usar Zookeeper como transporte de mensajes. |
celery[sqlalchemy] : | para usar SQLAlchemy como resultado backend ( compatible ). |
celery[pyro] : | para utilizar el transporte de mensajes Pyro4 ( experimental ). |
celery[slmq] : | para utilizar el transporte SoftLayer Message Queue ( experimental ). |
celery[consul] : | para usar el almacén de claves/valores de Consul.io como transporte de mensajes o backend de resultados ( experimental ). |
celery[django] : | especifica la versión más baja posible para el soporte de Django. Probablemente no debería utilizar esto en sus requisitos; está aquí solo con fines informativos. |
celery[gcpubsub] : | para utilizar Google Pub/Sub como transporte de mensajes. |
Descargue la última versión de Apio desde PyPI:
https://pypi.org/project/celery/
Puedes instalarlo haciendo lo siguiente:
$ tar xvfz apio-0.0.0.tar.gz $ cd apio-0.0.0 $ python setup.py construir # instalación de python setup.py
El último comando debe ejecutarse como usuario privilegiado si actualmente no está utilizando un virtualenv.
La versión de desarrollo de Celery también requiere las versiones de desarrollo de kombu
, amqp
, billiard
y vine
.
Puede instalar la última instantánea de estos usando los siguientes comandos pip:
Instalación de $ pip https://github.com/celery/celery/zipball/main#egg=celery Instalación de $ pip https://github.com/celery/billiard/zipball/main#egg=billiard Instalación de $ pip https://github.com/celery/py-amqp/zipball/main#egg=amqp Instalación de $ pip https://github.com/celery/kombu/zipball/main#egg=kombu Instalación de $ pip https://github.com/celery/vine/zipball/main#egg=vine
Consulte la sección Contribuciones.
Para debates sobre el uso, el desarrollo y el futuro de Apio, únase a la lista de correo de usuarios de apio.
Ven a chatear con nosotros en IRC. El canal #apio está ubicado en la red Libera Chat.
Si tiene alguna sugerencia, informe de error o molestia, infórmelo a nuestro rastreador de problemas en https://github.com/celery/celery/issues/
https://github.com/celery/celery/wiki
Este proyecto existe gracias a todas las personas que contribuyen. El desarrollo del apio ocurre en GitHub: https://github.com/celery/celery
Le recomendamos encarecidamente que participe en el desarrollo del apio. Si no te gusta GitHub (por algún motivo), puedes enviar parches periódicamente.
Asegúrese de leer también la sección Contribución al apio en la documentación.
¡Gracias a todos nuestros patrocinadores! [Conviértete en patrocinador]
Apoya este proyecto convirtiéndote en patrocinador. Su logotipo aparecerá aquí con un enlace a su sitio web. [Conviértete en patrocinador]
Este software tiene la licencia Nueva Licencia BSD. Consulte el archivo LICENSE
en el directorio de distribución superior para obtener el texto completo de la licencia.