В документе говорилось:
Причина, по которой это необходимо в Django, заключается в том, что многие библиотеки, особенно адаптеры баз данных, требуют, чтобы к ним обращались в одном потоке. в котором они были созданы. Кроме того, большая часть существующего кода Django предполагает, что все он выполняется в одном потоке, например. промежуточное программное обеспечение добавляет данные в запрос для последующего использования в представлениях.
Но еще один вопрос: безопасно ли, когда две задачи asyncio обращаются к одному и тому же ожидаемому объекту? сказал, что asyncio в Python является потокобезопасным.
И, как я знаю, поскольку GIL все еще существует, доступ к одному объекту из нескольких потоков должен быть потокобезопасным.
Может кто-нибудь может дать минимальный пример того, почему мы должны использовать await sync_to_async(foo)() вместо непосредственно foo() в django или других асинхронных приложениях?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-django