Рантайм · Inquir Compute

Python 3.12 serverless-функции для API, cron и ML-инструментов

Python 3.12 в изолированных контейнерах: numpy, pandas, scikit-learn и httpx через слои. Lambda-стиль <code>handler(event, context)</code> совместим с AWS Lambda; деплой из браузера или CLI.

Обновлено: 2026-06-28

Суть ответа

Python 3.12 serverless-функции для API, cron и ML-инструментов. numpy, pandas, scikit-learn, httpx и boto3 подключаются через слои функции. Контейнер изолирован — конфликты зависимостей между функциями исключены.

Когда подходит и когда нет

  • ML-инференс и обработка данных: numpy, pandas, scikit-learn
  • Существующий Lambda-код на Python для миграции

На что обратить внимание

  • Для простого JSON-прокси без научных пакетов Node.js или Go дают меньший холодный старт.
  • Если модель уже на HuggingFace Inference и нужен только API-прокси, накладные расходы Python ни к чему.

Когда нужен полноценный Python для serverless

Deno и edge-рантаймы не поддерживают PyPI-пакеты: numpy, pandas, scikit-learn и torch работают только в полноценном Python-контейнере.

ML-инференс, обработка данных, криптография — задачи, которым нужны C-расширения из PyPI, а не JavaScript-аналог.

Когда Python в serverless избыточен

Для простого JSON-прокси без научных пакетов Node.js или Go дают меньший холодный старт.

Если модель уже на HuggingFace Inference и нужен только API-прокси, накладные расходы Python ни к чему.

Python 3.12 с PyPI-пакетами через слои

numpy, pandas, scikit-learn, httpx и boto3 подключаются через слои функции. Контейнер изолирован — конфликты зависимостей между функциями исключены.

Lambda-стиль def handler(event, context): та же сигнатура, что у AWS Lambda. Миграция сводится к замене ARN на URL шлюза.

Что даёт рантайм Python 3.12

PyPI через слои

numpy, pandas, scikit-learn, httpx, pillow и boto3 — добавьте в слой и подключите к функции.

Lambda-совместимость

def handler(event, context) — как в AWS Lambda; event["body"] приходит строкой JSON.

Async

async def handler поддерживается; asyncio — для параллельного I/O.

ML-инференс

scikit-learn, lightgbm и onnxruntime в изолированном контейнере — без конфликтов зависимостей.

Как задеплоить Python функцию

1

Написать handler

def handler(event, context): body = json.loads(event["body"]); ... return {"statusCode": 200, "body": ...}

2

Добавить зависимости в слой

requirements.txt превращается в слой через UI; нативные пакеты компилируются под рантайм.

3

Задеплоить

Загрузите через браузер или CLI — URL шлюза готов.

Python handler: AI agent tool and cron ETL

event.body arrives as a JSON string—parse with json.loads. Return {"statusCode": ..., "body": json.dumps(...)} for HTTP route responses. Secrets are injected as environment variables.

tools/classify.py (AI agent tool endpoint)
import json
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])  # injected from workspace secrets

def handler(event, context):
    body = json.loads(event.get("body") or "{}")
    text = body.get("text")
    if not text:
        return {"statusCode": 400, "body": json.dumps({"error": "text required"})}
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": f"Classify the sentiment of: {text}"}],
    )
    return {"statusCode": 200, "body": json.dumps({"sentiment": response.choices[0].message.content})}
jobs/nightly-sync.py (scheduled cron pipeline)
import json
import os
import pandas as pd
import psycopg2

def handler(event, context):
    conn = psycopg2.connect(os.environ["DATABASE_URL"])
    df = pd.read_sql("SELECT * FROM events WHERE processed = false LIMIT 1000", conn)
    # transform and upsert
    results = []
    for _, row in df.iterrows():
        result = process_row(row)
        results.append(result)
    conn.close()
    return {"processed": len(results)}

Когда выбирать Python

Когда это уместно

  • ML-инференс и обработка данных: numpy, pandas, scikit-learn
  • Существующий Lambda-код на Python для миграции

Когда лучше выбрать другое

  • Простой JSON-прокси без научных пакетов — Node.js или Go эффективнее

Вопросы и ответы

Совместимо с AWS Lambda Python?

Да. Та же сигнатура handler(event, context). event["body"] — строка; парсите через json.loads().

Как добавить numpy?

Создайте слой с numpy в requirements.txt и подключите к функции — дальше обычный import numpy as np.

How do I access environment variables and secrets?

Bind secrets in the Inquir console; they are injected as environment variables at runtime. Access with os.environ["SECRET_NAME"] — never hardcode credentials in your Python handler.

Can Python functions call private databases?

Yes. Container-backed functions can call databases and HTTP APIs using connection strings from workspace secrets—unlike edge isolates that block typical server-side outbound patterns. Reachability depends on your deployment network.