Según tengo entendido, Celery es una cola de tareas distribuidas, lo que significa que lo único que debe hacer es despachar tareas/trabajos a otros servidores y obtener 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 Apio, entonces, ¿por qué necesita Apio en absoluto?¿Por qué usar Apio en lugar de RabbitMQ?
Respuesta
Tienes razón, no necesitas apio en absoluto. Cuando diseña un sistema distribuido, hay muchas opciones y no hay una forma correcta de hacer las cosas que se adaptan a todas las situaciones.
Muchas personas consideran que es más flexible tener grupos de consumidores de mensajes esperando que aparezca un mensaje en la cola, haciendo algún trabajo y enviando un mensaje cuando el trabajo finaliza.
Apio es un marco que envuelve un montón de cosas en un paquete, pero si realmente no necesita todo el paquete, entonces es mejor configurar RabbitMQ e implementar justo lo que necesita sin toda la complejidad. Además, RabbitMQ se puede utilizar en muchos más escenarios además del escenario de cola de tareas que implementa Celery.
Pero si elige Apio, entonces piense dos veces sobre RabbitMQ. El modelo de colas de mensajes de Aplery es simplista y realmente se ajusta mejor a algo como Redis que a RabbitMQ. Rabbit tiene un amplio conjunto de opciones que Celery básicamente ignora.
Básicamente, el apósito proporciona una interfaz agradable para hacer exactamente lo que usted dice, y trata con toda la configuración para usted. Sí, podrías hacerlo a mano, pero estarías reescribiendo el apio.
También está el elemento de operaciones. Enormes partes de Apio están ahí para garantizar la confiabilidad (por ejemplo, no fallar cuando una excepción en particular se serializa, etc.) y para administrar a los trabajadores y grupos de trabajadores. – asksol
- 1. Libro para Django + Apio + RabbitMQ?
- 2. rabbitmq + fuga de memoria de apio?
- 3. django-apio sin un servidor amqp (rabbitmq)
- 4. Intercambio de temas con Apio y RabbitMQ
- 5. ¿Por qué RabbitMQ no persiste mensajes en una cola duradera?
- 6. Reintentar tareas perdidas o fallidas (Apio, Django y RabbitMQ)
- 7. Apio: ¿un mensaje en RabbitMQ puede ser consumido por dos o más trabajadores al mismo tiempo?
- 8. tarea de apio eta está desactivada, usando rabbitmq
- 9. ¿Hay alguna manera de hacer persistente el apio/RabbitMQ?
- 10. por qué usar - en lugar de _ en la url
- 11. ¿Por qué usar string :: iterator en lugar de index?
- 12. ¿Por qué debería usar git en lugar de svn?
- 13. Por qué/cuándo usar (!! p) en lugar de (p! = NULO)
- 14. ¿Por qué usar tuplas en lugar de objetos?
- 15. ¿por qué debería usar content_tag en lugar de html "normal"?
- 16. ¿Por qué usar curl en lugar de otros métodos?
- 17. ¿Por qué debería usar var en lugar de un tipo?
- 18. ¿Por qué debería usar url.openStream en lugar de url.getContent?
- 19. ¿Por qué usar System.Threading.Interlocked.Decrement en lugar de menos?
- 20. ¿Por qué usar C typedefs en lugar de #defines?
- 21. ¿Por qué usar Enums en lugar de Constants?
- 22. ¿Por qué usar ROLAP en lugar de simplemente MySQL?
- 23. ¿Por qué usar char [] en lugar de String?
- 24. ¿Por qué usar var en lugar del nombre de clase?
- 25. ¿Por qué debería usar operator.itemgetter (x) en lugar de [x]?
- 26. ¿Por qué usar GWT.create() en lugar de nuevo?
- 27. ¿Por qué usar registerDefaults: en lugar de setValue: forKey :?
- 28. ¿Por qué usar AsQueryable() en lugar de List()?
- 29. ¿Por qué usar select() en lugar de sleep()?
- 30. Android: por qué debe usar getBaseContext() en lugar de este
"Rabbit tiene un amplio conjunto de opciones que Celery básicamente ignora". Eso es cierto pero un poco engañoso. Por ejemplo, puede configurar reglas de enrutamiento en la capa Conejo que no están controladas por Apio, pero sí afectan el enrutamiento y el consumo de las tareas de Apio. Es un problema de diseño si desea que el enrutador sea manejado por la persona que llama, un enrutador personalizado de Aplery o el mecanismo de intercambio. Es cierto que las configuraciones de Rabbit pueden ser "invisibles" para Aplery, pero eso no significa que no tengan un efecto útil. –