Почему выполнение ждёт, что оно удерживает и как продолжается
Какие узлы останавливают выполнение, чем отвечают на запрос, какие деньги удерживаются во время ожидания и как и когда выполнение продолжается.
4 мин чтения
Выполнение не всегда проходит от входа до конца за один раз. На некоторых узлах оно останавливается, ждёт и потом продолжается само. Эта страница — о такой паузе со стороны флоу: что останавливает выполнение, что оно сохраняет и что удерживает, пока ждёт.
Что заставляет выполнение ждать
| Где оно останавливается | Чего оно ждёт |
|---|---|
| Очередь | Задержки, на которую настроен узел |
| Требуется одобрение | Решения человека или ключа либо конца времени на решение |
| AI-модель, пул которого настроен ждать | Подключения пула, которое может принять вызов, — после лимита запросов или когда ни у одного не осталось ёмкости |
| AI-модель, провайдер которого выполняет вызов в фоне | Ответа провайдера |
| AI-модель, политика перерасхода которого просит согласования | Решения по согласованию |
Запрос, отправленный в асинхронном режиме, тоже ждёт — ещё до того, как выполнится какой-либо узел: он находится в статусе queued, пока обработчик не начнёт его на входном узле.
Чем отвечают на запрос
На запрос, выполнение которого остановилось, сразу приходит 202 со статусом waiting. Ответ говорит в waiting_on, на каком узле стоит выполнение и чего ждёт, а retry_after_seconds — когда снова прочитать статус. Асинхронные запуски и ожидание перечисляет каждую причину waiting_on и показывает, как приложение ждёт результата.
После паузы на запрос уже ничто не отвечает: на него ответили. Что флоу делает дальше — его ответ, отказ, ошибка — читается из статуса выполнения или приходит с вебхуком execution.finished.
Что сохраняется и что удерживается
Slen сохраняет то, что выполнение успело собрать: вход, контекст и выходы пройденных узлов — в запечатанном виде, пока выполнение не продолжится. Контекст выполнения и пути говорит, что может прочитать узел после паузы.
| Пауза | Что удерживается, пока она длится |
|---|---|
| Очередь, Требуется одобрение | Ничего. Модель после узла резервируется после паузы, по бюджетам, какими они будут тогда |
| Пул, который ждёт подключения | Ничего. Холд вызова, который не удалось сделать, возвращается; вызов берёт новый, когда его пробуют снова |
| Согласование перерасхода | Ничего. Холд возвращается, когда запрашивается согласование |
| Вызов, который провайдер выполняет в фоне | Холд вызова — по умолчанию 30 минут от начала вызова. После этого холд возвращается, хотя Slen продолжает спрашивать ответ, а поздний ответ списывается поздно |
Как работает резервирование бюджета говорит, что делает холд и как он заканчивается.
Как выполнение продолжается
Выполнение продолжается на том узле, на котором остановилось.
Очередь пропускает его через По умолчанию.
Требуется одобрение выходит через Одобрено или Отклонено.
AI-модель пробует вызов снова или читает ответ провайдера.
Ждущие выполнения забираются раз в минуту, поэтому выполнение продолжается в пределах минуты после того, как пришло его время или решено его согласование. О вызове, который провайдер выполняет в фоне, спрашивают каждые несколько секунд — по умолчанию не реже чем раз в 30.
Сколько выполнение может ждать
По умолчанию выполнение может ждать в общей сложности 72 часа, считая от его первой паузы, а отправленное в асинхронном режиме — от момента, когда оно было принято. После этого оно заканчивается статусом
failedсparked_expired. Вызов, который провайдер ещё выполняет, когда время вышло, заканчивается так же.Задержка узла Очередь и время на решение узла Требуется одобрение не могут быть больше 71 часа по умолчанию: большее отклоняется при публикации флоу.
Пул ждёт подключения по умолчанию не больше трёх раз. После этого вызов завершается ошибкой так же, как без ожидания.
Согласование, по которому никто не решил вовремя, считается отказом.
Где пауза стоять не может
До Очередь и Требуется одобрение нельзя дойти от Резерв бюджета раньше, чем до узла AI-модель, для которого он резервирует, потому что ждущее выполнение не держит резерва. Такой флоу не публикуется, с кодом park_inside_finance_chain. По каким связям идёт проверка, говорит статья Финансовая цепочка.
Смотреть ждущие выполнения
Ждущее выполнение имеет статус Ожидает на вкладке Выполнения своего флоу. Режим Вживую на холсте флоу показывает, на каком узле стоит каждое и чего оно ждёт, — Разбор выполнения. Согласования ждут на странице Согласования: Согласования говорит, как по ним решать.
Что читать дальше
Очередь — узел, который заставляет выполнение ждать заданное время.
Асинхронные запуски и ожидание — ждать результата в приложении.
Согласования — решить по выполнению, которое ждёт человека.
Требуется одобрение — узел, который ждёт решения.
AI-модель — когда выполнение ждёт на узле модели.