Существуют следующие способы настроить конфигурацию, чтобы поддержать выполнение фоновых задач.
Для контейнеров Container Services:
Если используете «горячие» контейнеры, фоновые задачи по умолчанию будут выполняться после завершения запросов к контейнеру.
Если используете «холодные» контейнеры, в первую очередь рассмотрите возможность перехода на «горячие» контейнеры. Так фоновые задачи будут успевать выполняться вне зависимости от времени, которое занимает их выполнение.
Если хотите продолжить использовать «холодные» контейнеры:
Увеличьте таймаут ожидания запросов — Idle-таймаут, сек. Максимальный таймаут — 3600 секунд. В это время контейнер будет находиться в режиме ожидания запросов и продолжит выполнять фоновые задачи.
Добавьте в вашем образе обработку сигнала SIGTERM. Укажите какие задачи нужно завершить перед остановкой контейнера. Когда время ожидания, которое указано в Idle-таймаут, сек истечет, в контейнер, поднятый из вашего образа, будет отправлен сигнал SIGTERM. Приложение внутри контейнера его обработает и выполнит те фоновые задачи, которые вы указали. Затем контейнер остановится.
Для заданий Container Jobs:
Увеличьте таймаут выполнения задания — Таймаут выполнения задания, сек. Максимальный таймаут — 3600 секунд. В это время задание будет ожидать ответа от контейнера, и фоновые задачи продолжат выполняться.
Если вам нужно завершить фоновые задачи при аварийном завершении задания, добавьте в вашем образе обработку сигнала SIGTERM. Укажите какие задачи нужно завершить. Когда задание будет завершаться по таймауту и основной процесс не успевает завершиться к этому моменту, система отправит в задание сигнал SIGTERM. Этот сигнал будет обработан и фоновые задачи, которые вы указали, выполнятся. Затем задание завершится.
При увеличении таймаута время активной работы контейнеров и заданий увеличивается. Это может повлиять на стоимость.