python - shared_task - ¿Por qué usar el apio en lugar de RabbitMQ?
celery worker (2)
Según tengo entendido, Celery es una cola de tareas distribuida, lo que significa que lo único que debería hacer es enviar tareas / trabajos a otros servidores y recuperar el resultado. RabbitMQ es una cola de mensajes, y nada más. Sin embargo, un trabajador podría simplemente escuchar el MQ y ejecutar la tarea cuando se recibe un mensaje. Esto logra exactamente lo que ofrece el apio, así que ¿por qué necesita el apio?
Tienes razón, no necesitas celery en absoluto. Cuando diseña un sistema distribuido, hay muchas opciones y no hay una forma correcta de hacer las cosas que se adapte a todas las situaciones.
Muchas personas descubren que es más flexible tener grupos de consumidores de mensajes que esperan que un mensaje aparezca en su cola, que realicen algunos trabajos y que envíen un mensaje cuando finalice el trabajo.
El apio es un marco que envuelve muchas cosas en un paquete, pero si realmente no necesita el paquete completo, entonces es mejor configurar RabbitMQ e implementar lo que necesita sin toda la complejidad. Además, RabbitMQ se puede usar en muchos más escenarios además del escenario de cola de tareas que implementa Celery.
Pero si elige Celery, entonces piense dos veces en RabbitMQ. El modelo de colas de mensajes de Celery es simplista y realmente es mejor para algo como Redis que para RabbitMQ. Rabbit tiene un rico conjunto de opciones que Celery básicamente ignora.
El apio básicamente proporciona una interfaz agradable para hacer exactamente lo que usted dijo y se ocupa de toda la configuración por usted. Sí, podrías hacerlo a mano, pero solo estarías reescribiendo apio.