Vercel Functions для Node.js: настройка отмены запросов для каждого пути
Разработчики, использующие Vercel Functions на Node.js, теперь могут настраивать автоматическую отмену выполнения функции при обрыве запроса со стороны клиента. Это особенно актуально для AI-чатов, долгих вычислений и стриминговых ответов, где пользователь может передумать и уйти, а сервер продолжае

Разработчики, использующие Vercel Functions на Node.js, теперь могут настраивать автоматическую отмену выполнения функции при обрыве запроса со стороны клиента. Это особенно актуально для AI-чатов, долгих вычислений и стриминговых ответов, где пользователь может передумать и уйти, а сервер продолжает тратить ресурсы. Новая функция позволяет гибко конфигурировать отмену для каждого пути, экономя вычислительные мощности и снижая затраты.
Vercel Functions теперь поддерживают отмену запросов на уровне путей
Новая функция позволяет Vercel Functions на Node.js детектировать, когда клиент прервал соединение — например, нажал кнопку «Стоп» в AI-чате, закрыл вкладку браузера или перешёл на другую страницу. Раньше сервер продолжал выполнение до конца, даже если результат уже никому не нужен. Теперь разработчик может явно указать, для каких путей включить отмену, и функция завершится досрочно, экономя вычислительные ресурсы и токены.
Предыстория и контекст
Проблема нерационального расхода ресурсов при обрыве соединения стара как веб. Для serverless-функций, где каждая миллисекунда выполнения стоит денег, а AI-генерация потребляет дорогие токены, это особенно критично. Vercel уже предоставлял возможность отмены для edge-функций, но для Node.js-окружения такой опции не было. Теперь же платформа догоняет ожидания разработчиков, добавляя гибкую конфигурацию через файл vercel.json.
Как настроить отмену запросов в Vercel Functions?
Всё, что нужно — добавить в конфигурацию vercel.json флаг "supportsCancellation": true для нужных путей. Можно включить для всех функций сразу или только для конкретных эндпоинтов, например, для AI-генерации. После этого в коде функции разработчик может подписаться на событие отмены через Request.signal.aborted или обработчик события abort на объекте сигнала. Если используется AI SDK, достаточно передать abortSignal в стрим, и SDK сам остановит генерацию при отмене.
Технические детали: как работает отмена
Механизм основан на стандартном веб-API AbortController. Когда клиент разрывает соединение, Vercel генерирует сигнал отмены, который передаётся в функцию. Разработчик может проверить флаг request.signal.aborted — если он true, можно немедленно завершить выполнение, не отправляя ответ. Для стриминговых ответов достаточно передать сигнал в поток, и он закроется автоматически. Это позволяет избежать лишней генерации токенов в AI-моделях и снизить время биллинга.
Какие сценарии выигрывают от отмены запросов?
Нововведение в первую очередь полезно разработчикам AI-приложений на Vercel: чат-ботов, генераторов контента, код-ассистентов. Если пользователь нажал «стоп» или закрыл окно, сервер перестаёт тратить ресурсы на бесполезную генерацию. Это снижает счёт за облачные вычисления и уменьшает нагрузку на API AI-провайдеров. Также функция пригодится для любых долгих операций — обработки видео, парсинга больших данных, генерации отчётов. Российские разработчики, использующие Vercel, могут особенно оценить экономию, учитывая рост цен на облачные сервисы.
Что будет дальше
Vercel продолжает развивать платформу в сторону большей гибкости и экономии. Можно ожидать, что поддержка отмены появится и для других рантаймов, а также расширится документация с примерами для популярных фреймворков. Пока функция доступна только для Node.js, но Vercel уже анонсировал подобные возможности для edge-функций. В будущем, вероятно, появится автоматическая отмена по умолчанию для всех функций без дополнительной настройки.
Итог
Поддержка отмены запросов для Node.js-функций на Vercel — важный шаг к оптимизации ресурсов в serverless-среде. Разработчики теперь могут легко настроить досрочное завершение при обрыве соединения, экономя деньги и улучшая пользовательский опыт. Следите за обновлениями документации, чтобы не пропустить новые возможности.