jsonscraper
Рынки
К журналу

Cloudflare стала откладывать обновление Durable Objects, чтобы дать активным задачам завершиться

После деплоя активный объект может до пяти минут работать на старой версии; WebSocket переживёт переход, если использует Hibernation API.

Редакционная политика Сообщить об ошибке

После деплоя активный Cloudflare Durable Object теперь может продолжить работу на текущей версии кода, пока не перейдёт в гибернацию, либо до истечения установленного срока. 30 октября Cloudflare установила отложенное обновление по умолчанию с максимальной задержкой пять минут. Для разработчиков это меняет поведение уже работающих объектов во время выкладки: обновление не обязано немедленно прерывать их, а поддерживаемые WebSocket-соединения могут сохраниться при переходе на новую версию.

Article: Cloudflare стала откладывать обновление Durable Objects, чтобы дать активным задачам завершиться
Summary: С 30 октября Cloudflare по умолчанию применяет к Durable Objects отложенное обновление кода. Это даёт активным объектам время перейти в состояние гибернации, но не гарантирует завершение любой операции и не сохраняет все WebSocket-соединения.
Image role: cover — the central idea
Section: 
Visual subject: Conceptual editorial visualization of a persistent cloud compute object continu
Иллюстрация показывает суть обновления: активный объект может продолжить работу на прежнем коде до гибернации или истечения заданного срока.© jsonscraper · создано с ИИ

Что происходит во время деплоя

Durable Objects — адресуемые объекты с устойчивой идентичностью и состоянием, которые Cloudflare использует, в частности, для координации клиентов, длительных задач и WebSocket-сессий. Для одного объекта одновременно действует одна версия кода. Поэтому при немедленной замене активный экземпляр может сброситься, прервав работу или соединения.

Теперь стандартный сценарий — отложенный переход. После выкладки активный объект продолжает обслуживать запросы на старой версии. Если он успевает перейти в гибернацию раньше, новая версия будет запущена при следующем обращении. Если пять минут истекли, а объект всё ещё активен, он сбрасывается и принимает новую версию. Развёртывание Worker при этом завершается отдельно: задержка касается момента, когда уже активный объект начнёт исполнять новый код.

Кому это полезно

Изменение важно для сервисов, где один объект удерживает работу между запросами: например, для долгой сессии, координации нескольких клиентов или соединения WebSocket. Отложенный переход создаёт окно, в котором такой объект может естественно завершить текущую активность или уснуть, прежде чем обновиться. Для WebSocket Cloudflare отдельно указывает условие: соединения, использующие Hibernation API, остаются подключёнными, когда объект принимает новый код после гибернации.

Практический вывод для команды — определить, какие активные объекты могут оставаться занятыми дольше нескольких минут, и выяснить, какой API WebSocket используется. От этого зависит, даст ли новый порядок деплоя приложению шанс на мягкий переход или соединение завершится при принудительном обновлении.

Пять минут — окно, а не гарантия

Cloudflare описывает отложенное обновление как best effort: объект может сброситься раньше, например при обновлении среды выполнения. Если он не ушёл в гибернацию к концу максимальной задержки, платформа применит новую версию через сброс. Поэтому важное состояние следует сохранять в долговременном хранилище, а операции проектировать с учётом возможного повторного запуска. Документация Cloudflare рекомендует сохранять состояние, которое должно переживать деплои, а не рассчитывать на память активного экземпляра.

Команды могут переопределить поведение в конфигурации Durable Objects: задать режим немедленного обновления либо выбрать другой срок для отложенного перехода. Немедленный режим пригодится, когда новая версия должна вступить в действие сразу, например при срочном исправлении; более длинная задержка может дать объектам дополнительное время, но также продлевает период, когда часть экземпляров обслуживает старую версию.

Что проверить перед следующей выкладкой

Сверьте совместимость запросов между Worker и Durable Object на время, когда они могут работать на разных версиях. Проверьте, сохраняется ли критическое состояние в хранилище, а не только в памяти. Для WebSocket установите, использует ли приложение Hibernation API: обычные соединения могут завершиться при применении обновления. Если деплой требует немедленного перехода, проверьте явную настройку режима, вместо того чтобы полагаться на новое значение по умолчанию.

Таким образом, Cloudflare изменила стандартный компромисс при деплое: активные объекты получают ограниченное время для естественного перехода, а команды сохраняют возможность ускорить обновление настройкой. Самый полезный результат для разработчика — проверить совместимость старой и новой версий, сохранность состояния и тип WebSocket до следующей выкладки.

Персоны

Для этой статьи персоны пока не указаны.

Читайте дальшеАгенты OpenAI передавали секреты через кэш процессора — без сети и общих файлов
Читать следующую статью

Превратите прочитанное в рабочую интеграцию

Изучайте API социальных данных jsonscraper, тестируйте запросы и создавайте новые процессы.

Смотреть API