# політики

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()

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

asyncio.set_event_loop_policy(policy)

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

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

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

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

class asyncio.AbstractEventLoopPolicy

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

  get_event_loop()

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

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

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

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

  set_event_loop(loop)

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

  new_event_loop()

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

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

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

class asyncio.DefaultEventLoopPolicy

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

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

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

  Застаріло починаючи з версії 3.12: The `get_event_loop()` method of the default asyncio policy now emits a `DeprecationWarning` if there is no current event loop set and it decides to create one. In some future Python release this will become an error.

class asyncio.WindowsSelectorEventLoopPolicy

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

  Availability: Windows.

class asyncio.WindowsProactorEventLoopPolicy

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

  Availability: Windows.

## Спеціальна політика

Щоб запровадити нову політику циклу подій, рекомендується створити підклас `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())