Inquir Compute logoInquir Compute
Паттерн · Inquir Compute

Serverless-функции без HTTP-таймаута: сравнение Vercel, Lambda и Inquir

У каждой платформы — свой лимит. Vercel Functions: 10–60 с. Lambda: до 15 мин. Inquir пайплайны: нет HTTP-окна. Разберём, когда лимит важен и как его обойти.

Last updated: 2026-04-20

Direct answer

Serverless-функции без HTTP-таймаута: сравнение Vercel, Lambda и Inquir. HTTP-функция принимает запрос, вызывает `global.durable.startNew()` и возвращает jobId. Оркестрация выполняет шаги без HTTP-окна — столько, сколько нужно.

When it fits

  • Задача занимает больше 10 секунд
  • Провайдер имеет жёсткий таймаут (Vercel, CF Workers)

Tradeoffs

  • Более длинный таймаут — не решение для задач, которые должны занимать минуты или часы. Это просто немного больший потолок.
  • Синхронное ожидание результата блокирует соединение и ресурсы; при пике нагрузки это создаёт очередь ожидающих запросов.

Как таймаут HTTP ломает долгие задачи

  • Vercel Serverless Functions: 60s (Pro), 300s (Enterprise)
  • AWS Lambda: 900s maximum
  • Cloudflare Workers: 30s CPU time
  • Supabase Edge Functions: 60s

Шлюз закрывает соединение по истечении лимита. Задача может продолжаться, но клиент уже не получит ответ — а провайдер может решить, что функция «зависла».

Почему увеличение таймаута не помогает

Более длинный таймаут — не решение для задач, которые должны занимать минуты или часы. Это просто немного больший потолок.

Синхронное ожидание результата блокирует соединение и ресурсы; при пике нагрузки это создаёт очередь ожидающих запросов.

Как работают пайплайны без HTTP-ограничений

HTTP-функция принимает запрос, вызывает `global.durable.startNew()` и возвращает jobId. Оркестрация выполняет шаги без HTTP-окна — столько, сколько нужно.

Результат — polling по jobId или вебхук по завершении. Ни одна из сторон не держит соединение открытым.

Сравнение таймаутов платформ

Vercel Functions

Hobby: 10 с. Pro: 60 с. Enterprise: 300 с. Жёсткий лимит, не настраивается в коде.

AWS Lambda

До 15 минут. Для HTTP за API Gateway: 29 с. Для async invoke: 15 мин.

Cloudflare Workers

CPU: 30 мс (Bundled) / без лимита (Unbound). Жёсткое ограничение на CPU-время.

Inquir Pipelines

Нет HTTP-окна для пайплайнов. Шаги работают вне Request/Response-цикла.

Как убрать таймаут из долгой задачи

1

Вынести тяжёлую работу в оркестрацию

HTTP-функция — только валидация и `global.durable.startNew()`. Тяжёлая работа — в шагах.

2

Вернуть jobId клиенту

Клиент получает `{ jobId }` немедленно; дальше опрашивает статус или ждёт вебхук.

3

Настроить повторы шагов

Если шаг упал — повторяется без пересчёта предыдущих. Результат — в истории.

No-timeout CSV processing pipeline

HTTP accepts the upload URL and returns 202. Pipeline step reads, transforms, and stores—taking as long as needed with step-level retries.

api/import-csv.mjs
export async function handler(event) {
  const { fileUrl, jobId } = JSON.parse(event.body || '{}');
  if (!fileUrl) return { statusCode: 400, body: JSON.stringify({ error: 'fileUrl required' }) };
  await global.durable.startNew('process-csv', undefined, { fileUrl, jobId });
  return { statusCode: 202, body: JSON.stringify({ jobId, status: 'processing' }) };
}
jobs/process-csv.mjs (no HTTP timeout)
export async function handler(event) {
  const { fileUrl, jobId } = event.payload ?? {};
  const rows = await downloadAndParseCSV(fileUrl); // may take minutes for large files
  let processed = 0;
  for (const batch of chunk(rows, 1000)) {
    await db.upsertBatch(batch);
    processed += batch.length;
  }
  await notifyUser(jobId, { processed, total: rows.length });
  return { jobId, processed, total: rows.length };
}

Когда нужен этот паттерн

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

  • Задача занимает больше 10 секунд
  • Провайдер имеет жёсткий таймаут (Vercel, CF Workers)

Когда лучше не трогать

  • Синхронный ответ критичен и задача укладывается в 10 с

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

Есть ли таймаут у самих шагов пайплайна?

Да — у каждого шага есть таймаут выполнения. Но это не HTTP-таймаут шлюза; шаги могут занимать минуты.

Как передать прогресс клиенту?

Polling по jobId через отдельный маршрут или вебхук на URL клиента в конце пайплайна.

Inquir Compute logoInquir Compute

Самый простой способ запускать AI-агентов и backend-джобы без инфраструктуры.

Связаться info@inquir.org

© 2025 Inquir Compute. Все права защищены.