Блокирующие код и asyncio

Мы знаем, что мы можем сделать много асинхронных операций с помощью asyncio, но, как выполнить блокирующие операции с ним? На самом деле это довольно просто, asyncio позволяет нам запускать код с блокирующими командами с помощью метода BaseEventLoop.run_in_executor. Он будет выполнять наши функции параллельно и предоставит нам объекты Future, через которые мы можем получить результаты и состояние выполнения (await или yield from).

Давайте посмотрим пример с популярной библиотекой requests:

В добавление маленький пример из документации:

Этот код возвращает asyncio.Future объект.

Начиная с версии  3.5.3: loop.run_in_executor () больше не настраивает max_workers исполнителей пула потоков, который он создает, а оставляет пул потоков (ThreadPoolExecutor) в настройках по умолчанию.

Обсуждение закрыто.