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, но это приложение не установлено на вашем компьютере.