Поддержка Django для асинхронных движков баз данных

Я не могу найти информацию о поддержке django асинхронных движков баз данных. Например, для postgresql django поддерживает только библиотеку psycopg2, которая полностью синхронна и больше ничего не поддерживается, для sqlite django поддерживает только библиотеку sqlite3, которая тоже синхронна. Я не очень хорошо ориентируюсь в django и, конечно, могу ошибаться, но какой смысл в django asgi, если он не поддерживает асинхронные движки баз данных (в смысле, тогда весь асинхронный код становится синхронным)?

И второй вопрос, есть ли способ использовать асинхронные движки в django ?

Это из Django Docs

*Вы ищете какую поддержку асинхронного режима для баз данных? *

# DJANGO_SETTINGS_MODULE=settings.py python -m asyncio
>>> import asyncio
>>> from asgiref.sync import sync_to_async
>>> from django.db import connection
>>> # In an async context so you cannot use the database directly:
>>> connection.cursor()

django.core.exceptions.SynchronousOnlyOperation: You cannot call this from
an async context - use a thread or sync_to_async.
>>> # Nor can you pass resolved connection attributes across threads:
>>> await sync_to_async(connection.cursor)()
...
django.db.utils.DatabaseError: DatabaseWrapper objects created in a thread
can only be used in that same thread. The object with alias 'default' was
created in thread id 4371465600 and this is thread id 6131478528.

https://docs.djangoproject.com/en/4.0/topics/async/

Насколько я знаю, в Django ORM нет поддержки async. Поэтому вам следует рассмотреть возможность использования другого фреймворка или интегрировать другой ORM, например sqlalchemy

Вот что говорится в документе: "Мы все еще работаем над поддержкой async для ORM и других частей Django. Вы можете ожидать увидеть это в будущих релизах. На данный момент вы можете использовать адаптер sync_to_async() для взаимодействия с синхронизируемыми частями Django. Существует также целый ряд асинхронных нативных библиотек Python, с которыми вы можете интегрироваться."

Для вашего второго вопроса: Настройка Django для использования SQLAlchemy

Но я бы настоятельно рекомендовал подумать о смене фреймворка, если у вас не так много кода, написанного на django bonded. На что-то вроде FastAPI, или aiohttp

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