2011-02-17 13 views

Respuesta

18

Pika es la biblioteca recomendada por RabbitMQ, y py-ampqlib también se menciona. Dependiendo de para qué esté usando Rabbit, también puede consultar Celery (una biblioteca de cliente dedicada a la cola distribuida).

De nuevo, dependiendo del uso, es posible que también desee consultar el qpid de Apache, que es una alternativa cliente-servidor basada en AMPQ completa a RabbitMQ. Una cosa que nos atrajo a qpid fue que parecía tener una mayor solidez en los bloqueos de servidor (las colas se conservan de forma distribuida).

+6

Acabo de descubrir que el apio crea una cola por tarea, lo que es una debilidad decepcionante http://celeryproject.org/docs/userguide/tasks.html#amqp-result-backend –

+0

No hemos encontrado que sea un problema ; nuestras tareas de uso se consumen rápidamente (muy raramente esperamos que algo esté sentado por más de unos segundos). También puede ser específico de la implementación; mencionan específicamente RabbitMQ allí. Sin embargo, me gustaría saber si te está causando dificultades. – SteveMc

+0

Nunca probé el apio porque simplemente no parecía ajustarse a la arquitectura general de AMQP. La cola de mensajes no es solo para distribuir tareas a grupos de trabajadores. –

1

Actualmente estoy en el medio de hacer que nuestra aplicación Python use SSL. No desarrollé originalmente esta aplicación (ni soy un desarrollador de Python), así que no sé mucho al respecto, pero parece que utilizamos el AMQP Client in Twisted.

QPid también tiene uno. De nuevo, no sé la calidad.

+0

Miré brevemente txAMQP pero el desarrollo parece haberse estancado – dgorissen

22

Mi propia investigación me llevó a creer que la biblioteca correcta para usar sería Kombu, ya que esto es también a lo que Celery (mencionado por @SteveMc) ha hecho la transición. También estoy usando RabbitMQ y he usado Kombu con el backend predeterminado de amqplib con éxito.

Kombu también admite other transports detrás de la misma API. Útil si necesita reemplazar AMQP o agregar algo como redis a la mezcla. No lo he intentado sin embargo.

Nota: Kombu actualmente no es compatible con la última versión de pika (en caso de que confíe en ella por algún motivo). Solo 5.2.0 es compatible actualmente, esto me mordió hace un tiempo.

+0

Debe actualizar esta respuesta ahora que, de acuerdo con el problema al que se vincula, descubrió su error y que no fue Kombu el que se rompió. –

+1

@Brandon Craig Rhodes: hecho :) – dgorissen

2

Después de haber examinado todas estas bibliotecas, ahora estoy convencido de que la respuesta correcta es ninguna de ellas. En su lugar, construya una capa de abstracción como una cuña sobre la biblioteca que elija, ya que es probable que se encuentre con una situación en la que tenga que cambiar las bibliotecas.

Pero recuerde que si se apega a la misma versión del protocolo AMQP, estas bibliotecas sí interoperan. Debido a las diferentes bibliotecas que se están probando, teníamos partes de una aplicación prototipo ejecutando pika, kombu y py-amqplib.

Lea este blog sobre replacing amqplib with pika para tener una idea de por qué esta es una buena idea.

Cuestiones relacionadas