¿Qué es el apio?
El apio es un sistema distribuido simple, flexible y confiable que maneja una gran cantidad de mensajes
Cola de tareas asincrónica centrada en el procesamiento en tiempo real
También es compatible con la programación de tareas.
Arquitectura de apio
La arquitectura de Apio se compone de tres partes, un intermediario de mensajes, una unidad de ejecución de tareas (trabajador) y un almacén de resultados de tareas (almacén de resultados de tareas).
Middleware de mensajes
El propio apio no proporciona servicios de mensajería, pero puede integrarse fácilmente con el middleware de mensajería proporcionado por terceros. Incluyendo RabbitMQ, Redis, etc.
Unidad de ejecución de tareas
Worker es la unidad de ejecución de tareas proporcionada por Celery. Los trabajadores se ejecutan simultáneamente en los nodos del sistema distribuido.
Almacenamiento de resultados de tareas
El almacén de resultados de tareas se utiliza para almacenar los resultados de las tareas realizadas por el trabajador. Apio admite el almacenamiento de los resultados de las tareas de diferentes formas, incluyendo AMQP, redis, etc.
Componentes de apio
El apio juega el papel de productor y consumidor
-
Productor: Productor de
tareas. Llame a la API de Celery, función o decorador, y genere tareas y entréguelas a la cola de tareas para su procesamiento son todos productores de tareas. -
Celery Beat:
programador de tareas, el proceso Beat leerá el contenido del archivo de configuración y enviará periódicamente las tareas que se deben ejecutar debido a la configuración a la cola de tareas. -
Broker: Agente de
mensajes, la cola en sí, también conocido como middleware de mensajes. Acepte el mensaje de tarea enviado por el productor de tareas, guárdelo en la cola y luego distribúyalo al consumidor de tareas en orden (generalmente una cola de mensajes o una base de datos). -
Trabajador de apio: los
consumidores que realizan tareas, generalmente ejecutan varios consumidores en varios servidores para mejorar la eficiencia operativa. -
Backend de resultados:
guarde la información de estado y los resultados después de que se complete el procesamiento de la tarea para la consulta.
escenas a utilizar
-
Tareas asincrónicas:
envío de correos electrónicos, envío de mensajes
, tareas que requieren mucho tiempo en pedidos automáticos de productos químicos,
todas las solicitudes que deben procesarse de forma asincrónica están disponibles -
Tareas cronometradas: el
sistema de órdenes de trabajo obtiene regularmente órdenes de trabajo de horas extras para alarmas retrasadas
y borra a miembros caducados
ejemplos de aplicación de apio
-
Apio es una cola de tareas distribuida de mensajes asincrónicos desarrollada en base a python, a través de la cual puede realizar fácilmente el procesamiento asincrónico de tareas. Si necesita tareas asincrónicas en sus escenarios comerciales, puede considerar usar apio
-
Desea ejecutar un comando por lotes en 100 máquinas, puede llevar mucho tiempo, pero no desea que su programa espere a que regrese el resultado, sino que le devuelva un ID de tarea, solo necesita mantener este ID de tarea después de un tiempo. Puede obtener el resultado de la ejecución de la tarea, puede continuar haciendo otras cosas mientras la ejecución de la tarea está en progreso
-
El apio necesita usar un middleware de mensajes para recibir y enviar mensajes de tareas y almacenar los resultados de las tareas al realizar tareas. Generalmente, se usa rabbitMQ o Redis
Ventajas del apio
-
Simple: una vez que esté familiarizado con el flujo de trabajo del apio, es relativamente simple de configurar y usar
-
Alta disponibilidad: cuando la ejecución de la tarea falla o la conexión se interrumpe durante la ejecución, Apio intentará ejecutar la tarea de nuevo automáticamente
-
Rápido: un apio de un solo proceso puede realizar millones de tareas por minuto
-
Flexible: casi todos los componentes del apio se pueden ampliar y personalizar
Diagrama de flujo de trabajo básico de apio
usuario: programa de usuario, utilizado para decirle a apio que realice una tarea.
broker: almacenar tareas (confíe en RabbitMQ o Redis para el almacenamiento)
trabajador: realizar tareas
Muy importante
Soporte de versión
Celery version 4.0 runs on
Python ❨2.7, 3.4, 3.5❩
PyPy ❨5.4, 5.5❩
This is the last version to support Python 2.7, and from the next version (Celery 5.x) Python 3.5 or newer is required.
If you’re running an older version of Python, you need to be running an older version of Celery:
Python 2.6: Celery series 3.1 or earlier.
Python 2.5: Celery series 3.0 or earlier.
Python 2.4 was Celery series 2.2 or earlier.
Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform.
Si la versión de Python no es compatible ↓
Resolver problemas de versión:
Bajo la propuesta oficial de Apio, se recomienda cambiar el nombre de archivo del archivo asíncrono a asíncrono
C: \ Python37 \ Lib \ site-packages \ kombu \ async
C:\Python37\Lib\site-packages\celery\utils\timer2.py
C:\Python37\lib\site-packages\celery\concurrency\asynpool.py
C:\Python37\lib\site-packages\celery\worker\components.py
C:\Python37\lib\site-packages\celery\worker\autoscale.py
C:\Python37\lib\site-packages\celery\worker\consumer.py
Todos los siguientes archivos tienen paquetes de guía asíncronos, cambiaremos los informes internos a asíncronos