Английское название: 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[Выбросить исключение таймаута]
Применить
Таймаут
УстановитьТаймаут
УстановитьОбработчикТаймаута
Синтаксис:
Применить(<Операция>, <Параметры>, <СигналПрерыванияОперации>)Параметры:
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| Операция | Действие, ШагПайплайнаОтказоустойчивости, Строка | Выполняемая операция, вложенный шаг пайплайна или лямбда-выражение операции | |
| Параметры | Массив, ФиксированныйМассив, Произвольный, Неопределено | Неопределено |
Параметры операции |
| СигналПрерыванияОперации | СигналПрерыванияОперации, Неопределено | Неопределено |
Сигнал кооперативного прерывания операции |
Возвращаемое значение:
Тип: Произвольный.
Описание:
Выполняет операцию с учетом настроенного таймаута.
Чтобы операция могла завершиться после таймаута, передайте один и тот же СигналПрерыванияОперации в Применить(...), Пайплайн.Запустить(...) или Пайплайн.ЗапуститьАсинх(...).
После истечения таймаута стратегия запрашивает этот сигнал. Ожидание самой стратегии внешним сигналом не прерывается: она ждет результат через ОжидатьЗавершения(Таймаут). Дальше завершение зависит от пользовательского кода: длительные циклы, ожидания и вложенные вызовы должны периодически вызывать ПроверитьПрерывание() или проверять ПрерываниеЗапрошено(). Если операция не проверяет сигнал, она продолжит выполняться в фоне до естественного завершения.
Синтаксис:
Таймаут()Возвращаемое значение:
Тип: Число.
Описание:
Возвращает установленный таймаут в миллисекундах.
Синтаксис:
УстановитьТаймаут(<Таймаут>)Параметры:
| Имя | Тип | Описание |
|---|---|---|
| Таймаут | Число | Максимально допустимое время ожидания в миллисекундах |
Возвращаемое значение:
Тип: СтратегияТаймаута.
Описание:
Устанавливает таймаут ожидания операции.
Синтаксис:
УстановитьОбработчикТаймаута(<Обработчик>, <ДополнительныеПараметры>)Параметры:
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| Обработчик | Действие, Строка | Обработчик, который вызывается при превышении таймаута. Строка трактуется как лямбда-выражение. Получает КонтекстТаймаута. Возвращаемое значение не используется | |
| ДополнительныеПараметры | Массив, ФиксированныйМассив, Произвольный, Неопределено | Неопределено |
Дополнительные параметры обработчика |
Возвращаемое значение:
Тип: СтратегияТаймаута.
Описание:
Устанавливает обработчик, который вызывается перед исключением при превышении таймаута. Если заданы дополнительные параметры, они передаются после контекста таймаута. Подробности о лямбда-выражениях см. в руководстве.