Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • VibeCraft
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Yandex Cloud Trust
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
  • Кейсы
  • Документация
  • Блог
Сделано на Gravity UI
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
    • Функция
    • Вызов функции
    • Асинхронный вызов функции
    • Долгоживущие функции
    • Уведомления о завершении выполнения функции
    • Сетевое взаимодействие
    • Монтирование внешних ресурсов на файловую систему функции
    • Сборщик
    • Dead Letter Queue
    • Логи функции
    • Резервное копирование
    • Квоты и лимиты
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Уведомление пользовательского кода в активном экземпляре долгоживущей функции
  • Уведомление пользовательского кода в неактивном экземпляре функции
  1. Концепции
  2. Уведомления о завершении выполнения функции

Уведомления о завершении выполнения функции

Статья создана
Yandex Cloud
Открыть в Markdown
  • Уведомление пользовательского кода в активном экземпляре долгоживущей функции
  • Уведомление пользовательского кода в неактивном экземпляре функции

В некоторых случаях сервис может принудительно остановить экземпляр функции. При этом в пользовательский код функции поступает уведомление о предстоящем принудительном завершении работы.

В зависимости от заданного в версии функции таймаута и текущего состояния экземпляра функции, существует два типа таких уведомлений:

  • для активных экземпляров долгоживущих функций;
  • для неактивных экземпляров функций.

Важнейшее различие между этими типами уведомлений — количество времени, которое дается функции на штатное завершение работы до того, как экземпляр будет завершен принудительно. Данное различие необходимо учитывать в обработчиках этих типов уведомлений.

Уведомление пользовательского кода в активном экземпляре долгоживущей функцииУведомление пользовательского кода в активном экземпляре долгоживущей функции

Этот тип уведомления направляется в пользовательский код функции при соблюдении следующих условий:

  • функция является долгоживущей;
  • до истечения срока таймаута, заданного в настройках версии функции, остается более десяти минут;
  • экземпляр функции в текущий момент активен, то есть обрабатывает как минимум один вызов функции.

Уведомление о предстоящей принудительной остановке экземпляра отправляется в пользовательский код функции в форме POSIX-сигнала за десять минут до момента принудительного завершения работы экземпляра.

По умолчанию в качестве уведомления отправляется сигнал SIGTERM (Termination signal).

Вместо сигнала SIGTERM в пользовательский код функции может быть отправлен сигнал SIGINT (Interrupt from keyboard). Для этого в версию функции необходимо добавить переменную окружения X_YCF_GRACEFUL_SHUTDOWN_SIGNAL_SIGINT со значением 1.

Если позволяет среда выполнения, добавьте в функцию обработчик, который будет реагировать на поступающий от операционной системы POSIX-сигнал (SIGTERM или SIGINT). Это позволит избежать потери данных в случае нештатного завершения обработки вызова, обусловленного принудительной остановкой экземпляра функции.

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

Вы можете отключить рассылку сигналов о предстоящей принудительной остановке экземпляра функции. Для этого в версию функции необходимо добавить переменную окружения X_YCF_NO_GRACEFUL_SHUTDOWN_SIGNAL со значением 1. В этом случае у экземпляра функции будет также десять минут на завершение работы, но уведомление о принудительной остановке в пользовательский код функции направляться не будет.

Уведомление пользовательского кода в неактивном экземпляре функцииУведомление пользовательского кода в неактивном экземпляре функции

Этот тип уведомления направляется в пользовательский код функции при условии, что экземпляр неактивен, то есть в текущий момент не обрабатывает ни одного вызова.

При принятии решения о принудительном завершении работы неактивного экземпляра функции в пользовательский код функции сначала направляется POSIX-сигнал SIGTERM, а затем (спустя 50 миллисекунд) — POSIX-сигнал SIGKILL, который принудительно остановит процесс.

Такая остановка экземпляра функции принудительно завершает все сетевые соединения на уровне L3 сетевой модели OSI.

В коде функции вы можете использовать обработчик, чтобы перехватить поступивший сигнал SIGTERM. Так вы сможете, например, штатно завершить сессии в сетевых соединениях (на уровне L7 сетевой модели OSI).

Примечание

С момента отправки сигнала SIGTERM у функции есть не более 50 миллисекунд на выполнение необходимых операций.

Отправка уведомлений в пользовательский код неактивного экземпляра функции — безусловная. Она не зависит от заданного в версии функции значения таймаута. Отправку таких уведомлений нельзя отключить, нельзя выбрать другой вид сигнала или изменить время ожидания.

Была ли статья полезна?

Предыдущая
Долгоживущие функции
Следующая
Сетевое взаимодействие
Сделано на Gravity UI
Проект Яндекса
© 2026 ООО «Яндекс.Облако»