Pouvez-vous recommander quelle bibliothèque Python utiliser pour accéder à AMQP (RabbitMQ)? De mes recherches, pika
semble être le préféré.
Pika est la bibliothèque recommandée par RabbitMQ, et py-ampqlib est également mentionné. En fonction de votre utilisation de Rabbit, vous pouvez également consulter Celery (une bibliothèque client dédiée à la mise en file d'attente distribuée).
Encore une fois, en fonction de l'utilisation, vous voudrez peut-être également regarder le fichier qpid d'Apache, qui constitue une alternative client-serveur complète basée sur AMPQ et RabbitMQ. Une des choses qui nous a attirés dans qpid était qu’il semblait avoir une meilleure robustesse en cas de crash du serveur (les files d’attente sont persistantes de manière distribuée).
Mes propres recherches m'ont amené à penser que la bonne bibliothèque à utiliser serait Kombu , car c'est également ce à quoi Celery (mentionné par @SteveMc) est passé. J'utilise également RabbitMQ et ai utilisé Kombu avec le back-end par défaut d'amqplib avec succès.
Kombu supporte également autres transports derrière la même API. Utile si vous devez remplacer AMQP ou ajouter quelque chose comme Redis au mélange. Je n'ai pas encore essayé.
Note: Kombu ne prend actuellement pas en charge la dernière version de Pika (devrait-il s’appuyer dessus pour une raison quelconque). Seule la version 5.2.0 est actuellement prise en charge.
Après avoir examiné toutes ces bibliothèques, je suis maintenant convaincu que la bonne réponse n’est aucune d’elles. Construisez plutôt une couche d'abstraction en tant que calque sur la bibliothèque de votre choix, car vous êtes obligé de vous retrouver dans une situation où vous devez changer de bibliothèque.
Mais rappelez-vous que si vous vous en tenez à la même version du protocole AMQP, ces bibliothèques interopèrent. En raison des différentes bibliothèques testées, nous avions des parties d'un prototype d'application exécutant pika, kombu et py-amqplib.
Lisez ce blog à propos de remplacer amqplib par pika pour savoir pourquoi c’est une bonne idée.
Je suis actuellement en train de faire en sorte que notre application Python utilise SSL. À l'origine, je n'ai pas développé cette application (je ne suis pas non plus un développeur Python). Je ne connais donc pas grand-chose à ce sujet, mais nous semblons utiliser le AMQP Client dans Twisted .
QPid en a également un. Encore une fois, je ne connais pas la qualité.