Django sync_to_async

использую channels в джанго

Есть consumer

class ChatConsumer(AsyncWebsocketConsumer):
    ...
    async def fetch_messages(self, data: typing.Dict):
        messages = await Message.last_10()
        print(messages)

Ну и модель

class Message(models.Model):
    ....
    @staticmethod
    @database_sync_to_async
    def last_10():
        return Message.objects.all()[:10]

В итоге при вызое фетча я получаю

django.core.exceptions.SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.

Пробовал без статик метода, менял местами декораторы (другая ошбика), пробовал другой запрос к бд делать, проовал декоратор from asgiref.sync import sync_to_async - всё то же

К слову без орм асинк работает как надо, сервер настроен правильно

Смотрел на эти доки


Ответы (0 шт):