Зачем нам нужен sync_to_async в Django? [дубликат] ⇐ Python

Программы на Python
Anonymous
Зачем нам нужен sync_to_async в Django? [дубликат]

Сообщение Anonymous »

В документе говорилось:

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

Но еще один вопрос: безопасно ли, когда две задачи asyncio обращаются к одному и тому же ожидаемому объекту? сказал, что asyncio в Python является потокобезопасным.
И, как я знаю, поскольку GIL все еще существует, доступ к одному объекту из нескольких потоков должен быть потокобезопасным.
Может кто-нибудь может дать минимальный пример того, почему мы должны использовать await sync_to_async(foo)() вместо непосредственно foo() в django или других асинхронных приложениях?
Этот вопрос (как sync_to_async преобразует функции синхронизации в асинхронные) не отвечает на мой вопрос, в этом примере использование sync_to_async не показывает никакой существенной разницы, порядок вызовов функций внутри Second_job тот же. И не имеют никакого отношения к предотвращению серьезного конфликта.
Я знаю, у кого работает sync_to_async, но зачем нам запускать функцию синхронизации в новом потоке в асинхронном контексте?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-django

Вернуться в «Python»