Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

  • Виды обработчика
  • Синхронный обработчик
  • Асинхронный обработчик
  • Примеры
  • Вывод структуры HTTP-запроса
  1. Разработка на Python
  2. Обработчик запросов

Обработчик запросов функции на Python

Статья создана
Yandex Cloud
Улучшена
Dmitry A.
Обновлена 7 апреля 2025 г.
  • Виды обработчика
  • Синхронный обработчик
  • Асинхронный обработчик
  • Примеры
    • Вывод структуры HTTP-запроса

Обработчик запросов — это метод, который используется для обработки вызовов функции на Python. При создании версии функции для нее задается точка входа — путь к обработчику запросов в формате <file>.<function>, где:

  • <file> — имя файла с кодом функции (без расширения .py). Например: index. Файл с кодом должен располагаться в корневой директории, а имя файла не должно содержать точек.
  • <function> — имя вызываемого объекта внутри файла <file>. Например: handler. При инициализации функции среда выполнения импортирует файл <file> и находит в нем вызываемый объект <function>, который запускается при каждом вызове функции.

Пример точки входа для функции на Python: index.handler.

Примечание

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

При вызове обработчика среда выполнения передает следующие аргументы:

  1. Тело запроса (параметр event):

    • Если тело запроса — JSON-документ, то оно будет преобразовано в dict с помощью метода json.loads.
    • Если функция была вызвана с параметром строки запроса ?integration=raw, тело HTTP-запроса передается в функцию как есть, без обработки.
  2. Контекст вызова (параметр context).

    Контекст содержит необходимую информацию о версии функции. Структура этого объекта описана в разделе Контекст вызова функции на Python.

Виды обработчикаВиды обработчика

Функция может использовать как синхронный, так и асинхронный обработчик.

Синхронный обработчикСинхронный обработчик

Чтобы вернуть результат выполнения, используйте оператор return или сигнализируйте об исключении с помощью оператора raise. Синхронная функция обязана возвращать результат или завершаться исключением.

Асинхронный обработчикАсинхронный обработчик

Обработчик может быть асинхронной функцией async def. В этом случае вы можете использовать следующие операторы:

  • return — возвращает ответ функции.
  • raise — сообщает среде выполнения об ошибке.
  • await — отслеживает выполнение вызова асинхронных функций.

Примечание

В качестве среды исполнения асинхронных функций поддерживается только библиотека asyncio.

Подробнее о разработке с помощью async/await читайте в соответствующем разделе документации.

ПримерыПримеры

Вывод структуры HTTP-запросаВывод структуры HTTP-запроса

Следующая функция выводит структуру запроса и контекста вызова одновременно и в журнал выполнения, и в ответ функции:

import json


def handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps(
            {
                'event': event,
                'context': context,
            }, 
            default=vars,
        ),
    }

Пример вызова функции:

curl \
  --data '{"hello": "world"}' \
  --header 'Content-Type: application/json' \
  https://functions.yandexcloud.net/<идентификатор_функции>?param=one

Результат:

{
    "context": {
        "aws_request_id": "6e8356f9-489b-4c7b-8ba6-c8cd********",
        "deadline_ms": 1657713543198,
        "function_name": "d4eo2faf62**********",
        "function_version": "d4e3vrugh3**********",
        "invoked_function_arn": "d4eo2faf62**********",
        "log_group_name": "ckgjmanjlh**********",
        "log_stream_name": "d4e3vrugh3**********",
        "memory_limit_in_mb": 128,
        "request_id": "6e8356f9-489b-4c7b-8ba6-c8cd********",
        "token": {
            "access_token": "<IAM-токен>",
            "expires_in": 42299,
            "token_type": "Bearer"
        }
    },
    "event": {
        "body": "{\"hello\": \"world\"}",
        "headers": {
            "Accept": "*/*",
            "Content-Length": "18",
            "Content-Type": "application/json",
            "Host": "functions.yandexcloud.net",
            "User-Agent": "curl/7.64.1",
            "X-Forwarded-For": "109.252.148.209",
            "X-Real-Remote-Address": "[109.252.148.209]:2816",
            "X-Request-Id": "6e8356f9-489b-4c7b-8ba6-c8cd********",
            "X-Trace-Id": "e9fe9b05-c1aa-4fb8-94d8-a514********"
        },
        "httpMethod": "POST",
        "isBase64Encoded": false,
        "multiValueHeaders": {
            "Accept": [
                "*/*"
            ],
            "Content-Length": [
                "18"
            ],
            "Content-Type": [
                "application/json"
            ],
            "Host": [
                "functions.yandexcloud.net"
            ],
            "User-Agent": [
                "curl/7.64.1"
            ],
            "X-Forwarded-For": [
                "109.252.148.209"
            ],
            "X-Real-Remote-Address": [
                "[109.252.148.209]:2816"
            ],
            "X-Request-Id": [
                "6e8356f9-489b-4c7b-8ba6-c8cd********"
            ],
            "X-Trace-Id": [
                "e9fe9b05-c1aa-4fb8-94d8-a514********"
            ]
        },
        "multiValueParams": {},
        "multiValueQueryStringParameters": {
            "param": [
                "one"
            ]
        },
        "params": {},
        "pathParams": {},
        "queryStringParameters": {
            "param": "one"
        },
        "requestContext": {
            "httpMethod": "POST",
            "identity": {
                "sourceIp": "109.252.148.209",
                "userAgent": "curl/7.64.1"
            },
            "requestId": "6e8356f9-489b-4c7b-8ba6-c8cd********",
            "requestTime": "13/Jul/2022:11:58:59 +0000",
            "requestTimeEpoch": 1657713539
        },
        "url": ""
    }
}

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

Предыдущая
Управление зависимостями
Следующая
Контекст вызова
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»