Skip to content

Latest commit

 

History

History
140 lines (86 loc) · 7.02 KB

File metadata and controls

140 lines (86 loc) · 7.02 KB

СтратегияТаймаута

Английское название: Timeout.

Синтаксис:

Новый СтратегияТаймаута(<Таймаут>)

Параметры:

Имя Тип Описание
Таймаут Число Максимально допустимое время ожидания в миллисекундах

Как работает

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

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

Диаграмма выполнения:

flowchart TD
    A[Вызов стратегии] --> B[Запустить операцию]
    B --> C{Операция завершилась<br/>до таймаута?}
    C -- Да --> D{Есть ошибка?}
    D -- Да --> E[Выбросить ошибку операции]
    D -- Нет --> F[Вернуть результат]
    C -- Нет --> G{Передан<br/>СигналПрерыванияОперации?}
    G -- Да --> H[ЗапроситьПрерывание]
    H --> J[Вызвать обработчик таймаута<br/>если задан]
    G -- Нет --> J
    J --> K[Выбросить исключение таймаута]
Loading

Методы

Применить
Таймаут
УстановитьТаймаут
УстановитьОбработчикТаймаута

Применить

Синтаксис:

Применить(<Операция>, <Параметры>, <СигналПрерыванияОперации>)

Параметры:

Имя Тип Значение по умолчанию Описание
Операция Действие, ШагПайплайнаОтказоустойчивости, Строка Выполняемая операция, вложенный шаг пайплайна или лямбда-выражение операции
Параметры Массив, ФиксированныйМассив, Произвольный, Неопределено Неопределено Параметры операции
СигналПрерыванияОперации СигналПрерыванияОперации, Неопределено Неопределено Сигнал кооперативного прерывания операции

Возвращаемое значение:

Тип: Произвольный.

Описание:

Выполняет операцию с учетом настроенного таймаута.

Кооперативное прерывание

Чтобы операция могла завершиться после таймаута, передайте один и тот же СигналПрерыванияОперации в Применить(...), Пайплайн.Запустить(...) или Пайплайн.ЗапуститьАсинх(...).

После истечения таймаута стратегия запрашивает этот сигнал. Ожидание самой стратегии внешним сигналом не прерывается: она ждет результат через ОжидатьЗавершения(Таймаут). Дальше завершение зависит от пользовательского кода: длительные циклы, ожидания и вложенные вызовы должны периодически вызывать ПроверитьПрерывание() или проверять ПрерываниеЗапрошено(). Если операция не проверяет сигнал, она продолжит выполняться в фоне до естественного завершения.

Таймаут

Синтаксис:

Таймаут()

Возвращаемое значение:

Тип: Число.

Описание:

Возвращает установленный таймаут в миллисекундах.

УстановитьТаймаут

Синтаксис:

УстановитьТаймаут(<Таймаут>)

Параметры:

Имя Тип Описание
Таймаут Число Максимально допустимое время ожидания в миллисекундах

Возвращаемое значение:

Тип: СтратегияТаймаута.

Описание:

Устанавливает таймаут ожидания операции.

УстановитьОбработчикТаймаута

Синтаксис:

УстановитьОбработчикТаймаута(<Обработчик>, <ДополнительныеПараметры>)

Параметры:

Имя Тип Значение по умолчанию Описание
Обработчик Действие, Строка Обработчик, который вызывается при превышении таймаута. Строка трактуется как лямбда-выражение. Получает КонтекстТаймаута. Возвращаемое значение не используется
ДополнительныеПараметры Массив, ФиксированныйМассив, Произвольный, Неопределено Неопределено Дополнительные параметры обработчика

Возвращаемое значение:

Тип: СтратегияТаймаута.

Описание:

Устанавливает обработчик, который вызывается перед исключением при превышении таймаута. Если заданы дополнительные параметры, они передаются после контекста таймаута. Подробности о лямбда-выражениях см. в руководстве.