# політики

Попередження

Policies are deprecated and will be removed in Python 3.16. Users are encouraged to use the `asyncio.run()` function or the `asyncio.Runner` with loop_factory to use the desired loop implementation.

An event loop policy is a global object used to get and set the current event loop, as well as create new event loops. The default policy can be replaced with built-in alternatives to use different event loop implementations, or substituted by a custom policy that can override these behaviors.

The policy object gets and sets a separate event loop per context. This is per-thread by default, though custom policies could define context differently.

Custom event loop policies can control the behavior of `get_event_loop()`, `set_event_loop()`, and `new_event_loop()`.

Об’єкти політики мають реалізовувати API, визначені в `AbstractEventLoopPolicy` абстрактному базовому класі.

## Отримання та налаштування політики

Наступні функції можна використовувати для отримання та налаштування політики для поточного процесу:

asyncio.get_event_loop_policy()

  Повернути поточну політику для всього процесу.

  Застаріло починаючи з версії 3.14: The `get_event_loop_policy()` function is deprecated and will be removed in Python 3.16.

asyncio.set_event_loop_policy(policy)

  Установіть поточну політику для всього процесу на policy.

  Якщо policy встановлено на `None`, політика за замовчуванням буде відновлена.

  Застаріло починаючи з версії 3.14: The `set_event_loop_policy()` function is deprecated and will be removed in Python 3.16.

## Об’єкти політики

Базовий клас політики абстрактного циклу подій визначається наступним чином:

class asyncio.AbstractEventLoopPolicy

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

  get_event_loop()

    Отримати цикл подій для поточного контексту.

    Повертає об’єкт циклу подій, що реалізує інтерфейс `AbstractEventLoop`.

    Цей метод ніколи не повинен повертати `None`.

    Змінено в версії 3.6.

  set_event_loop(loop)

    Встановіть для циклу подій для поточного контексту значення loop.

  new_event_loop()

    Створити та повернути новий об’єкт циклу подій.

    Цей метод ніколи не повинен повертати `None`.

  Застаріло починаючи з версії 3.14: The `AbstractEventLoopPolicy` class is deprecated and will be removed in Python 3.16.

asyncio поставляється з такими вбудованими політиками:

class asyncio.DefaultEventLoopPolicy

  Стандартна асинхронна політика. Використовує `SelectorEventLoop` в Unix і `ProactorEventLoop` у Windows.

  Немає необхідності встановлювати стандартну політику вручну. asyncio налаштовано на автоматичне використання політики за замовчуванням.

  Змінено в версії 3.8: У Windows `ProactorEventLoop` тепер використовується за замовчуванням.

  Змінено в версії 3.14: The `get_event_loop()` method of the default asyncio policy now raises a `RuntimeError` if there is no set event loop.

  Застаріло починаючи з версії 3.14: The `DefaultEventLoopPolicy` class is deprecated and will be removed in Python 3.16.

class asyncio.WindowsSelectorEventLoopPolicy

  Альтернативна політика циклу подій, яка використовує реалізацію циклу подій `SelectorEventLoop`.

  Availability: Windows.

  Застаріло починаючи з версії 3.14: The `WindowsSelectorEventLoopPolicy` class is deprecated and will be removed in Python 3.16.

class asyncio.WindowsProactorEventLoopPolicy

  Альтернативна політика циклу подій, яка використовує реалізацію циклу подій `ProactorEventLoop`.

  Availability: Windows.

  Застаріло починаючи з версії 3.14: The `WindowsProactorEventLoopPolicy` class is deprecated and will be removed in 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())