Django - Как использовать сигналы django в классах потребителей async?
Я хочу отправить веб-сокет из приемника сигналов Django в асинхронном потребителе. Приведенный ниже код приводит к ошибке: Object of type coroutine is not JSON serializable
Consumers.py
class MessagePreviewConsumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
last_message_general = await self.last_message_general()
await self.send(text_data=json.dumps({
'last_message_general': last_message_general,
}))
@sync_to_async
def last_message_general(self):
last_msg = Message.objects.filter(room = 'General')[len(Message.objects.filter(room = 'General'))-1::] if len(Message.objects.filter(room = 'General')) >= 1 else Message.objects.filter(room = 'General')
if last_msg:
for m in last_msg:
result = m.content, m.author.username, m.date_added.strftime("%H:%M")
return str(result)
break
else:
pass
@receiver(post_save, sender=Message)
def message_preview(sender, instance, created, **krwargs):
if created:
print(sender, instance, created)
last_message_general = MessagePreviewConsumer.last_message_general()
MessagePreviewConsumer.send(text_data=json.dumps({
'last_message_general': last_message_general,
}))
Вопрос: Как я могу вызвать эту функцию отправки из приемника сигналов?