Python 3.12 serverless-функции для API, cron и ML-инструментов
Python 3.12 в изолированных контейнерах: numpy, pandas, scikit-learn, httpx через слои. Lambda-стиль `handler(event, context)` — совместим с AWS Lambda; деплой из браузера или CLI.
Last updated: 2026-04-20
Answer first
Direct answer
Python 3.12 serverless-функции для API, cron и ML-инструментов. numpy, pandas, scikit-learn, httpx, boto3 — через слои функции. Контейнер изолирован: конфликты зависимостей между функциями исключены.
When it fits
- ML-инференс, обработка данных: numpy, pandas, scikit-learn
- Существующий Lambda-код на Python для миграции
Tradeoffs
- Простой JSON-прокси без научных пакетов — Node.js или Go дают меньший cold start.
- Если модель уже на HuggingFace Inference и нужен только API-прокси — Python overhead не нужен.
Нагрузка и где ломается
Когда нужен полноценный Python для serverless
Deno и edge-рантаймы не поддерживают PyPI-пакеты. numpy, pandas, scikit-learn, torch — только в полноценном Python-контейнере.
ML-инференс, обработка данных, криптография — задачи, которым нужен C-extension через PyPI, а не JavaScript-аналог.
Компромиссы
Когда Python serverless избыточен
Простой JSON-прокси без научных пакетов — Node.js или Go дают меньший cold start.
Если модель уже на HuggingFace Inference и нужен только API-прокси — Python overhead не нужен.
Как помогает Inquir
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 для параллельных IO.
ML-инференс
scikit-learn, lightgbm, onnxruntime в изолированном контейнере без конфликтов.
Что делать дальше
Как задеплоить Python функцию
Написать handler
`def handler(event, context): body = json.loads(event["body"]); ... return {"statusCode": 200, "body": ...}`
Добавить зависимости в слой
requirements.txt → слой через UI; нативные пакеты компилируются для рантайма.
Задеплоить
Загрузить через браузер или 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.
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})}
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-прокси без scientific пакетов — Node.js или Go эффективнее
FAQ
Вопросы и ответы
Совместимо с 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 connect to VPC databases, Redis clusters, and internal services that edge functions cannot reach.