Слушатель Rabbitmq, использующий pika в django - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение django, и я хочу получать сообщения от кролика mq.Я хочу, чтобы слушатель начал потреблять, когда я запускаю сервер django. Я использую библиотеку pika для подключения к rabbitmq. Доказательство того, что пример кода действительно поможет.

1 Ответ

0 голосов
/ 27 июня 2018

Сначала вам нужно как-то запустить ваше приложение в начале проекта django https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.AppConfig.ready

def ready(self):
    if not settings.IS_ACCEPTANCE_TESTING and not settings.IS_UNITTESTING:
        consumer = AMQPConsuming()
        consumer.daemon = True
        consumer.start()

Далее в любом удобном месте

import threading

import pika
from django.conf import settings


class AMQPConsuming(threading.Thread):
    def callback(self, ch, method, properties, body):
        # do something
        pass

    @staticmethod
    def _get_connection():
        parameters = pika.URLParameters(settings.RABBIT_URL)
        return pika.BlockingConnection(parameters)

    def run(self):
        connection = self._get_connection()
        channel = connection.channel()

        channel.queue_declare(queue='task_queue6')
        print('Hello world! :)')

        channel.basic_qos(prefetch_count=1)
        channel.basic_consume(self.callback, queue='queue')

        channel.start_consuming()

Это поможет http://www.rabbitmq.com/tutorials/tutorial-six-python.html

...