Сообщить об ошибке.

Фабрика для оперативного выполнения задач модулем asyncio

asyncio.eager_task_factory(loop, coro, *, name=None, context=None):

Новое в Python 3.12

Функция asyncio.eager_task_factory() представляет собой фабрику задач для быстрого выполнения задач.

При использовании этой фабрики (через loop.set_task_factory(asyncio.eager_task_factory)), сопрограммы начинают выполнение синхронно во время построения задачи. Задачи планируются в цикле обработки событий только в том случае, если они блокируются. Это может привести к повышению производительности, т.к. для сопрограмм, выполняющихся синхронно, исключаются накладные расходы на планирование циклов.

Распространенным примером, где это полезно, являются сопрограммы, которые используют кэширование или запоминание, чтобы по возможности избежать фактического ввода-вывода.

Обратите внимание, что немедленное выполнение сопрограммы является семантическим изменением. Если сопрограмма возвращает или вызывает, то задача никогда не будет запланирована в цикле обработки событий. Если выполнение сопрограммы блокируется, то задача запланирована в цикле обработки событий. Это изменение может привести к изменениям в поведении существующих приложений. Например, порядок выполнения задач приложения, скорее всего, изменится.

asyncio.create_eager_task_factory(custom_task_constructor):

Новое в Python 3.12

Функция asyncio.eager_task_factory() создает фабрику готовых задач, аналогичную asyncio.eager_task_factory(), используя предоставленный custom_task_constructor при создании новой задачи вместо задачи по умолчанию asyncio.Task.

custom_task_constructor должен быть вызываемым с подписью, соответствующей подписи Task.__init__. Вызываемый объект должен возвращать asyncio.Task-совместимый объект.

Функция asyncio.eager_task_factory() возвращает вызываемый объект, предназначенный для использования в качестве фабрики задач цикла событий через loop.set_task_factory(factory)).