Фоновые задачи для Vercel без worker-клея
Оставьте Next.js и фронтенд на Vercel. Перенесите обработку вебхуков, рассылки, синхронизацию и фоновую обработку в Inquir — Node.js 22, Python 3.12, Go 1.22 без 10-секундного таймаута Vercel Functions.
Last updated: 2026-04-20
- Keep on Vercel: Next.js app, previews, edge middleware, static assets.
- Move to Inquir: background jobs, cron tasks, webhook async handoff, long-running processing.
- Use both together: Vercel calls Inquir gateway routes to enqueue work; Inquir pipelines run it and post results back.
Answer first
Direct answer
Фоновые задачи для Vercel без worker-клея. Next.js остаётся на Vercel; Inquir добавляет HTTP-эндпоинты, которые принимают вебхуки, ставят задачи в пайплайн и продолжают работу без HTTP-таймаута.
When it fits
- Задача занимает больше 10–60 секунд
- Нужны повторы, история и изоляция по типу задачи
Tradeoffs
- Для лёгких фоновых задач с небольшим объёмом Vercel Cron или простые отложенные вызовы через `waitUntil` могут быть достаточны.
- Если вся инфраструктура уже в экосистеме Vercel и задачи укладываются в таймаут — переезд нецелесообразен.
Нагрузка и где ломается
Почему фоновые задачи не помещаются в Vercel Functions
Vercel Functions отлично подходят для SSR и API-маршрутов, но ограничены по времени выполнения. Длинные задачи — импорт CSV, рассылка, синхронизация с внешними API — не вписываются в рамки.
Настраивать отдельный worker-процесс или очередь только ради фоновых задач — лишний сервис для поддержки.
Компромиссы
Когда Vercel Queue / Cron достаточно
Для лёгких фоновых задач с небольшим объёмом Vercel Cron или простые отложенные вызовы через `waitUntil` могут быть достаточны.
Если вся инфраструктура уже в экосистеме Vercel и задачи укладываются в таймаут — переезд нецелесообразен.
Как помогает Inquir
Почему Inquir хорошо дополняет Vercel
Next.js остаётся на Vercel; Inquir добавляет HTTP-эндпоинты, которые принимают вебхуки, ставят задачи в пайплайн и продолжают работу без HTTP-таймаута.
Одна функция на задачу: зависимости изолированы, секреты хранятся в рабочем пространстве, история выполнения доступна в консоли.
Что получаете
Что Inquir добавляет к Vercel-стеку
Без таймаута HTTP
Пайплайны и задачи работают вне HTTP-окна — вебхук принимает запрос и возвращает 202, тяжёлая работа продолжается в фоне.
Изолированные контейнеры
Node.js 22, Python 3.12, Go 1.22 в изолированных контейнерах с поддержкой нативных модулей через слои.
Секреты вне кода
Ключи API хранятся в переменных окружения функции; ни в Next.js, ни в git они не попадают.
Cron и вебхуки
Одно рабочее пространство — расписания, HTTP-маршруты и вебхуки с общей историей вызовов.
Что делать дальше
Как подключить Inquir к Vercel-приложению
Создать функцию в Inquir
Функция принимает то же тело запроса, что уже отправляет Next.js-обработчик.
Вызвать из Next.js
В Server Action или API Route: fetch к шлюзу Inquir, вернуть 202 пользователю, продолжить в фоне.
Добавить наблюдаемость
История вызовов и логи в консоли Inquir; алерты по ошибкам не зависят от Vercel Log Drain.
Пример кода
Next.js → Inquir: enqueue a background job
Next.js API route returns 202 immediately; triggers an Inquir pipeline in the background. The pipeline step does the slow work and posts a webhook back when done.
export async function POST(request: Request) { const { reportId } = await request.json(); // Enqueue background job on Inquir — do not await await fetch(process.env.INQUIR_GATEWAY_URL + '/jobs/generate-pdf', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${process.env.INQUIR_API_KEY}`, }, body: JSON.stringify({ reportId }), }); return Response.json({ status: 'queued' }, { status: 202 }); }
export async function handler(event) { const { reportId } = JSON.parse(event.body || '{}'); if (!reportId) return { statusCode: 400, body: JSON.stringify({ error: 'reportId required' }) }; const pdf = await buildReport(reportId); await storage.upload(pdf, `reports/${reportId}.pdf`); await notifyUser(reportId); return { reportId, size: pdf.byteLength }; }
Когда подходит
Когда добавлять Inquir к Vercel
Когда это уместно
- Задача занимает больше 10–60 секунд
- Нужны повторы, история и изоляция по типу задачи
Когда лучше не трогать
- Задача укладывается в таймаут Vercel Functions и не требует изоляции зависимостей
FAQ
Вопросы и ответы
Как вызвать Inquir из Next.js?
Обычный fetch к URL шлюза с API-ключом в заголовке Authorization. Inquir возвращает 202 до того, как задача завершится.
Нужен ли общий домен?
Нет. Шлюз Inquir работает на своём домене; Next.js обращается к нему как к любому внешнему API.
What about Vercel Fluid Compute?
Fluid Compute extends concurrency for serverless functions on Vercel—useful when IO-heavy work fits within request scope. Use Inquir for work that genuinely needs to outlive the HTTP request, run on a schedule, or continue after a webhook ACK.
Do I need to manage a separate queue?
No. Inquir pipelines handle queuing, retries, and observability. Your Vercel API route just calls an Inquir gateway route—Inquir manages the rest.