Spec-Zone.ru › Python 3.14

Политики

Предупреждение

Политики объявлены устаревшими и будут удалены в Python 3.16. Рекомендуется использовать функцию asyncio.run() или asyncio.Runner с параметром loop_factory, чтобы использовать нужную реализацию цикла.

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

Объект политики получает и устанавливает отдельный цикл событий для каждого контекста. По умолчанию контекст определяется потоком, однако пользовательские политики могут определять контекст иначе.

Пользовательские политики цикла событий могут управлять поведением функций get_event_loop(), set_event_loop() и new_event_loop().

Объекты политик должны реализовывать API, определённые в абстрактном базовом классе AbstractEventLoopPolicy.

Получение и установка политики

Для получения и установки политики текущего процесса можно использовать следующие функции:

asyncio.get_event_loop_policy()

Возвращает политику, действующую во всём текущем процессе.

Устарела с версии 3.14: Функция get_event_loop_policy() объявлена устаревшей и будет удалена в Python 3.16.

asyncio.set_event_loop_policy(policy)

Устанавливает policy в качестве политики, действующей во всём текущем процессе.

Если для policy задано значение None, восстанавливается политика по умолчанию.

Устарела с версии 3.14: Функция set_event_loop_policy() объявлена устаревшей и будет удалена в Python 3.16.

Объекты политик

Абстрактный базовый класс политики цикла событий определён следующим образом:

class asyncio.AbstractEventLoopPolicy

Абстрактный базовый класс для политик asyncio.

get_event_loop()

Получает цикл событий для текущего контекста.

Возвращает объект цикла событий, реализующий интерфейс AbstractEventLoop.

Этот метод никогда не должен возвращать None.

Изменено в версии 3.6.

set_event_loop(loop)

Устанавливает loop в качестве цикла событий для текущего контекста.

new_event_loop()

Создаёт и возвращает новый объект цикла событий.

Этот метод никогда не должен возвращать None.

Устарел с версии 3.14: Класс AbstractEventLoopPolicy объявлен устаревшим и будет удалён в Python 3.16.

В asyncio предусмотрены следующие встроенные политики:

class asyncio.DefaultEventLoopPolicy

Политика asyncio по умолчанию. Использует SelectorEventLoop в Unix и ProactorEventLoop в Windows.

Устанавливать политику по умолчанию вручную не нужно. asyncio автоматически настраивается на использование политики по умолчанию.

Изменено в версии 3.8: В Windows теперь по умолчанию используется ProactorEventLoop.

Изменено в версии 3.14: Метод get_event_loop() политики asyncio по умолчанию теперь вызывает исключение RuntimeError, если цикл событий не установлен.

Устарел с версии 3.14: Класс DefaultEventLoopPolicy объявлен устаревшим и будет удалён в Python 3.16.

class asyncio.WindowsSelectorEventLoopPolicy

Альтернативная политика цикла событий, использующая реализацию цикла событий SelectorEventLoop.

Доступность: Windows.

Устарела с версии 3.14: Класс WindowsSelectorEventLoopPolicy объявлен устаревшим и будет удалён в Python 3.16.

class asyncio.WindowsProactorEventLoopPolicy

Альтернативная политика цикла событий, использующая реализацию цикла событий ProactorEventLoop.

Доступность: Windows.

Устарела с версии 3.14: Класс WindowsProactorEventLoopPolicy объявлен устаревшим и будет удалён в Python 3.16.

Пользовательские политики

Для реализации новой политики цикла событий рекомендуется создать подкласс DefaultEventLoopPolicy и переопределить методы, для которых требуется пользовательское поведение, например:

class MyEventLoopPolicy(asyncio.DefaultEventLoopPolicy):

    def get_event_loop(self):
        """Get the event loop.

        This may be None or an instance of EventLoop.
        """
        loop = super().get_event_loop()
        # Do something with loop ...
        return loop

asyncio.set_event_loop_policy(MyEventLoopPolicy())

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/asyncio-policy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API