Каналы Django: исключение внутри приложения: нет обработчика для типа сообщения app_consumer.notification_messagePython

Программы на Python
Anonymous
Каналы Django: исключение внутри приложения: нет обработчика для типа сообщения app_consumer.notification_message

Сообщение Anonymous »

Я пытаюсь отправить уведомление пользователю с помощью веб-сокетов об определенном событии.
У меня есть следующий приемник модели, который запускает метод веб-сокета:

Код: Выделить всё

@receiver(pre_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, update_fields=None, **kwargs):
if update_fields:
if 'pan_number_verified' in update_fields and instance.pan_number_verified is True:
notification = Notification.objects.create(message='Your PAN Number has been verified...Head on to '
'creating a campaign right away.', user=instance)
channel_layer = get_channel_layer()
async_to_sync(channel_layer.group_send)("notification_%s" % instance.id, {
"type": "app_consumer.notification_message",
"message": str(notification.id)
})
Вот потребитель моего приложения:

Код: Выделить всё

class AppConsumer(WebsocketConsumer):
def connect(self):
self.room_name = self.scope['url_route']['kwargs']['user_id']
self.room_group_name = 'notification_%s' % self.room_name
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()

def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)

def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']

async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'app_consumer.notification_message',
'message': message
}
)

def notification_message(self, event):
message = event['message']

self.send(text_data=json.dumps({
'message': message
}))
Но я получаю следующее сообщение об ошибке:


Исключение внутри приложения: Нет обработчик для типа сообщения app_consumer.notification_message

Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/channels/consumer .py", строка 59, в call
[receive, self.channel_receive], self.dispatch

Файл "/Library /Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/channels/utils.py", строка 51, в await_many_dispatch
ожидайте отправки (результат)

Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/asgiref/sync.py", строка 244, в вызове
return await asyncio.wait_for(future, timeout=None)

Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3 .7/asyncio/tasks.py", строка 414, в wait_for
return await fut

Файл "/Library/Frameworks/Python.framework/Versions/ 3.7/lib/python3.7/concurrent/futures/thread.py", строка 57, при запуске
result = self.fn(*self.args, **self.kwargs)

Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/channels/db.py", строка 14, в thread_handler
return super().thread_handler(loop, *args, **kwargs)

Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7 /site-packages/asgiref/sync.py", строка 277, в thread_handler
return func(*args, **kwargs)

Файл "/Library /Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/channels/consumer.py", строка 107, в отправке
поднять ValueError("Нет обработчика для типа сообщения %s" % message["type"])

Нет обработчика для типа сообщения app_consumer.notification_message


Подробнее здесь: https://stackoverflow.com/questions/602 ... type-app-c

Вернуться в «Python»