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,
        }))

Вопрос: Как я могу вызвать эту функцию отправки из приемника сигналов?

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