Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Cloud Functions
  • Начало работы
    • Обзор
    • Создание функции
      • Обзор
      • Python
      • Node.js
      • PHP
      • Go
      • Bash
    • Создание триггера
      • Обзор
      • Таймер
      • Триггер для Message Queue
      • Триггер для Object Storage
      • Триггер для Container Registry
      • Триггер для Cloud Logs
      • Триггер для Yandex IoT Core
  • Пошаговые инструкции
    • Все инструкции
    • Получение IAM-токена сервисного аккаунта с помощью функции
    • Управление правами доступа к функции
    • Управление функцией
      • Создание функции
      • Управление версиями функции
      • Работа в редакторе кода
      • Вызов функции
      • Изменение функции
      • Просмотр графиков мониторинга
      • Просмотр журнала выполнения
      • Удаление функции
    • Управление триггером
      • Получение информации о триггере
      • Создание таймера
      • Создание триггера для Message Queue
      • Создание триггера для Object Storage
      • Создание триггера для Container Registry
      • Создание триггера для Cloud Logs
      • Создание триггера для Yandex IoT Core
      • Изменение триггера
      • Удаление триггера
  • Концепции
    • Обзор
    • Функция
    • Вызов функции
    • Среда выполнения
      • Обзор
      • Окружение
      • Контекст выполнения
    • Сборщик
    • Триггер
      • Обзор
      • Таймер
      • Триггер для Message Queue
      • Триггер для Object Storage
      • Триггер для Container Registry
      • Триггер для Cloud Logs
      • Триггер для Yandex IoT Core
    • Dead Letter Queue
    • Лог-группы
    • Мониторинг
    • Резервное копирование
    • Квоты и лимиты
  • Разработка на Node.js
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Python
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Go
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на PHP
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на Bash
    • Обзор
    • Обработчик запросов
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Java
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
      • Класс HttpServlet
      • Spring Boot
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на R
    • Обзор
    • Модель программирования
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на C#
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Сценарии использования
    • Создание навыка Алисы
  • Правила тарификации
  • Управление доступом
  • Справочник API Functions
    • Аутентификация в API
    • gRPC
      • Обзор
      • FunctionService
      • OperationService
    • REST
      • Обзор
      • Function
        • Обзор
        • create
        • createVersion
        • delete
        • get
        • getVersion
        • getVersionByTag
        • list
        • listAccessBindings
        • listOperations
        • listRuntimes
        • listTagHistory
        • listVersions
        • removeTag
        • setAccessBindings
        • setTag
        • update
        • updateAccessBindings
  • Справочник API Triggers
    • Аутентификация в API
    • gRPC
      • Обзор
      • TriggerService
      • OperationService
    • REST
      • Обзор
      • Trigger
        • Обзор
        • create
        • delete
        • get
        • list
        • listOperations
        • update
  • Вопросы и ответы
  1. Концепции
  2. Среда выполнения
  3. Контекст выполнения

Контекст выполнения

  • Повторное использование контекста выполнения

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

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

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

Повторное использование контекста выполнения

После выполнения функции контекст некоторое время поддерживается в ожидании повторного вызова функции. Это значит, что:

  • Любые объявления в коде функции (вне кода обработчика) остаются инициализированными, обеспечивая дополнительную оптимизацию при повторном вызове функции.

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

  • Каждый контекст выполнения предоставляет 512 МБ дополнительного дискового пространства в каталоге /tmp. Содержимое каталога остается в контексте выполнения, предоставляя временный кэш, который можно использовать для нескольких вызовов. Вы можете добавить дополнительный код, чтобы проверить, есть ли в кэше данные, которые вы сохранили.

    Примечание

    Для файловой системы, смонтированной в каталоге /tmp, установлен флаг NOEXEC, который не позволяет выполнение двоичных файлов, записанных в этот каталог.

  • Фоновые процессы или обратные вызовы, инициированные вашей функцией, которые не завершились до завершения функции, возобновляются, если контекст выполнения будет использован повторно.

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

Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»