Django и AmqpConsumer с другими приложениями

У меня есть приложение django и amqp consumer/publisher. Я хочу отправить входящее сообщение моей функции в другом приложении. Но я получаю сообщение об ошибке: 'django.core.exceptions.AppRegistryNotReady: Apps are not loaded yet.' Как я могу это сделать?

Мои настройки.INSTALLED_APPS:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app',
    'rabbit_client.config.AmqpConfig'
]

AmqpConfig:

from django.apps import AppConfig
from rabbit_client.amqp_client import AMQPConsuming


class AmqpConfig(AppConfig):
    name = 'rabbit_client'

    def ready(self):
        consumer = AMQPConsuming()
        consumer.daemon = True
        consumer.start()

AMQPConsuming:

import threading

import pika
from django.conf import settings
from my_app.util import my_function   # it's call error messange


class AMQPConsuming(threading.Thread):
    def callback(self, channel, method, properties, body):
        data = body
        my_function(data)

    @staticmethod
    def _get_connection():
        parameters = pika.URLParameters(settings.RABBITMQ_SETTING['URL'])
        return pika.BlockingConnection(parameters)

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

        channel.queue_declare(
            queue=settings.RABBITMQ_SETTING['QUEUE_CONSUME'],
            durable=True
        )
        channel.basic_qos(prefetch_count=1)
        channel.basic_consume(
            on_message_callback=self.callback,
            queue=settings.RABBITMQ_SETTING['QUEUE_CONSUME']
        )
        channel.start_consuming()

Эта ошибка может возникнуть, когда вы добавляете приложение в INSTALLED_APPS в файле settings.py, но это приложение не установлено на вашем компьютере.

Вернуться на верх