Метод Django Channels await database_to_async не работает

Я пытаюсь создать приложение для уведомлений, используя Django Channels. Проблема, с которой я сталкиваюсь, заключается в следующей ошибке:

django.core.exceptions.SynchronousOnlyOperation: Вы не можете вызвать это из асинхронного контекста - используйте поток или sync_to_async.

consumers.py

class NotificationConsumer(AsyncJsonWebsocketConsumer):
    @database_sync_to_async
    def get_notifications(self, user):
        new_messages = NotificationSerializer(Notification.objects.filter(content=1, users_notified__in=[user]), many=True)

        notifs = {
            "new_messages": new_messages
        }

        return notifs

    async def connect(self):
        user = self.scope["user"]

        if user:
            self.channel_name = user.username
            self.room_group_name = 'notification_%s' % self.channel_name
            
            # Error happens in the following line
            notification = await self.get_notifications(self.scope["user"])
            print("Notification", notification)

            await self.channel_layer.group_add(
                self.room_group_name,
                self.channel_name
            )

            await self.accept()
        
        await self.disconnect(401)
    
    async def disconnect(self, close_code):
        await self.channel_layer.group_discard(
            self.room_group_name,
            self.channel_name
        )

    async def notify(self, event):
        await self.send_json(event["content"])

Я использовал точно такой же подход при разработке чат-приложения Django Channels, которое также сохраняет сообщения в базу данных. При попытке преобразовать мой подход к системе уведомлений, он больше не работает.

Как только я перестаю ожидать метод self.get_notifications, он работает, но я получаю обратно только <coroutine object SyncToAsync.__call__ at ...>

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