Pros y contras de usar el Apio vs RQ [cerrado]


Actualmente estoy trabajando en un proyecto python que requiere implementar algunos trabajos en segundo plano (principalmente para el envío de correos electrónicos y actualizaciones de bases de datos en gran medida). Yo uso Redis para agente de tareas. Así que en este punto tengo dos candidatos: Apio y RQ. Tuve experiencia con estas colas de trabajo, pero quiero pedirles que compartan su experiencia de usar estas herramientas. Tan.

  1. Qué pros y contras usar apio vs.RQ.
  2. Cualquier ejemplo de proyectos / tarea adecuada para usar apio vs RQ.

El apio parece bastante complicado, pero es una solución con todas las funciones. En realidad no creo que necesite todas estas características. Por otro lado, RQ es muy simple (por ejemplo, configuración, integración), pero parece que carece de algunas características útiles (por ejemplo, revocación de tareas, recarga automática de código)

Author: Maxim Kamenkov, 2012-11-18

2 answers

Esto es lo que he encontrado al tratar de responder a esta misma pregunta. Probablemente no es exhaustivo, e incluso puede ser inexacto en algunos puntos.

En resumen, RQ está diseñado para ser más simple. El apio está diseñado para ser más robusto. Ambos son excelentes.

  • Documentación. La documentación de RQ es completa sin ser compleja, y refleja la simplicidad general del proyecto - nunca te sientes perdido o confundido. Documentación del apio también es integral, pero espere volver a visitarlo bastante cuando esté configurando las cosas por primera vez, ya que hay demasiadas opciones para internalizar
  • Monitoreo. La flor de apio y el RQ dashboard son muy simples de configurar y le brindan al menos el 90% de toda la información que desearía

  • Soporte de broker. Apio es el claro ganador, RQ solo apoya a Redis. Esto significa menos documentación sobre "qué es un corredor", pero también significa que no puede cambie de brokers en el futuro si Redis ya no trabaja para usted. Por ejemplo, Instagram consideró tanto Redis como RabbitMQ con Apio. Esto es importante porque diferentes corredores tienen diferentes garantías, por ejemplo, Redis no puede (al momento de escribir) garantizar al 100% que sus mensajes se entreguen.

  • Colas prioritarias. El modelo de cola de prioridad RQs es simple y efectivo: los trabajadores leen las colas en orden. El apio requiere girar varios trabajadores para consumir desde diferentes colas. Ambos enfoques funcionan

  • Soporte del sistema operativo. Celery es el claro ganador aquí, ya que RQ solo se ejecuta en sistemas que admiten fork, por ejemplo, sistemas Unix

  • Soporte de idiomas. RQ solo soporta Python, mientras que Celery te permite enviar tareas de un idioma a otro

  • API. Apio es extremadamente flexible (múltiples backends de resultados, buen formato de configuración, soporte de lienzo de flujo de trabajo) pero, naturalmente, esta potencia puede ser confusa. Por por el contrario, la api RQ es simple.

  • Soporte de subtareas. Apio admite subtareas(por ejemplo, crear nuevas tareas desde tareas existentes). No se si RQ lo hace

  • Comunidad y Estabilidad. El apio es probablemente más establecido, pero ambos son proyectos activos. Al escribir este artículo, Apio tiene ~3500 estrellas en Github mientras que RQ tiene ~2000 y ambos proyectos muestran un desarrollo activo

En mi opinión, el apio no es tan complejo como su reputación podría llevarle para creer, pero usted tendrá que RTFM.

Entonces, ¿por qué alguien estaría dispuesto a cambiar el apio (posiblemente más completo) por RQ? En mi mente, todo se reduce a la simplicidad. Al restringirse a Redis + Unix, RQ proporciona una documentación más simple, una base de código más simple y una API más simple. Esto significa que usted (y los contribuyentes potenciales a su proyecto) puede centrarse en el código que le importa, en lugar de tener que mantener los detalles sobre el sistema de cola de tareas en su memoria de trabajo. Todos tenemos un limite cuántos detalles pueden estar en nuestra cabeza a la vez, y al eliminar la necesidad de mantener los detalles de la cola de tareas allí, RQ permite volver al código que le importa. Esa simplicidad viene a expensas de características como colas de tareas entre idiomas, amplio soporte del sistema operativo, garantías de mensajes 100% confiables y capacidad para cambiar de agente de mensajes fácilmente.

 75
Author: Hamy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-17 19:21:43

El apio no es tan complicado. En su núcleo, usted hace la configuración paso a paso desde el tutorials, cree una instancia celery, decore su función con @celery.task y luego ejecute la tarea con my_task.delay(*args, **kwargs).

A juzgar por su propia evaluación, parece que tiene que elegir entre carecer de características (clave) o tener algún exceso merodeando. Eso no es una elección demasiado difícil en mi libro.

 1
Author: Jesse the Game,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-18 16:05:53