This is my signal
@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}")
This is my consumer
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
}))
What i am trying to achieve is i want to trigger send_notification event whenever i create new channel in my db but when i tried so it is not working actually i try to check the what channel layer has been used with pring channel_layer its same. but when i print channel_layer.group_send it has diff coroutine at diff layer. Can anyone help me how can i do or what mistake i am making I am using in memory channel layer