Как вызвать событие веб-сокета (Django Channels) при создании нового объекта модели с помощью сигналов django

Это мой сигнал

@receiver(post_save, sender=ChannelGroup)
def channel_list_signal(sender, instance, created, **kwargs):
    try:
        print("signals")
        channel_layer = get_channel_layer()
        print(channel_layer)
        channel_layer.group_send(
                "channellist",
                {
                    'type': 'send_notification',
                    'message': "Done",
                })
        print("return 'Done'")
        return "Done"
    except Exception as e:
        raise Exception(f"Something went wrong in channel_list signal {e}")

Это мой потребитель

class ListChannelConsumer(AsyncWebsocketConsumer):
    def __init__(self, *args, **kwargs):
        super().__init__(args, kwargs)
        self.group_name = "channellist"
        self.channel_layer = None
        self.msg = None
        self.channels = []
        # self.connected = False

    async def connect(self):
        user_id = self.scope["url_route"]["kwargs"]["user_id"]
        is_user_present = await check_user(user_id)
        print(self.channel_layer)
        # group_id = sender + receiver
        if is_user_present:
            self.user_name = is_user_present.username

            await self.channel_layer.group_add(
                    "channellist",
                    "temp"
                )
            await self.accept()
            channel = await get_channels(is_user_present.username)
            await self.send(text_data=json.dumps({
                "payload": "connected",
                "Channels": channel
            }, default=str))
        else:
            raise Exception(f"User not present in database or private chat does not exists")

    async def disconnect(self, close_code):
        # Leave room group
        await self.channel_layer.group_discard(
            self.room_group_name,
            self.channel_name
        )

    async def send_notification(self, event):
        print(event)
        event_data = QueryDict.dict(event)
        channels = event_data.get('message')
        # Send message to WebSocket
        self.channels = await get_channels(self.user_name)
        await self.send(text_data=json.dumps({
            "Success": "channels",
            "message": channels
        }))

Я пытаюсь добиться того, что хочу запускать событие send_notification всякий раз, когда я создаю новый канал в моей базе данных, но когда я попытался это сделать, это не работает. не работает на самом деле я пытаюсь проверить, какой слой канала был использован использовался с помощью pring channel_layer он такой же. но когда я печатаю channel_layer.group_send он имеет разные coroutine на разных слоях. Может ли кто-нибудь помочь мне, что я могу сделать или какую ошибку я допускаю. Я использую в памяти канальный слой

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