Django channels AsyncComsumer не может поймать исключение custome Exception
Я создаю приложение для чата с Django-каналами. Я использую AsyncConsumer. В моем потребителе есть метод chatroom()
, который пытается вызвать другой метод _can_access_room()
. В _can_access_room()
есть случай, когда он вызывает пользовательское исключение (наследуется от Exception
).
Но я не могу поймать пользовательское исключение в chatroom()
. Журнал показывает, что оно возникло, но WebSocket отключается. Я установил точку останова на строке, которая ловит исключение, но оно не останавливается. Но если я ловлю базовое исключение, оно работает. Пожалуйста, помогите, спасибо ^^
Вот мой код:
async def chatroom(self, data: dict):
# check room in group or not?
if group_from_room_id(data.get('room_id')) in self.groups:
await self.chatroom_send(data)
else:
try:
a = await self._can_access_room(data)
except CustomException as e:
print('ahihi')
@database_sync_to_async
def _can_access_room(self, room_data: dict):
room_id = room_data.get('room_id')
chat_room: ChatRoom = ChatRoom.objects.filter(id=room_id).first()
if not chat_room:
raise custom_exceptions.RoomDoesNotExist
Вот журнал:
...
, line 455, in thread_handler
return func(*args, **kwargs)
File "***********/consumers/chat_room_consumer.py", line 153, in _can_access_room
raise custom_exceptions.RoomDoesNotExist
common.custom_exceptions.RoomDoesNotExist
WebSocket DISCONNECT /ws/chat/winners [127.0.0.1:49452]