
# Пробуждение по расписанию

Повторяющиеся окна пробуждения для сервера в режиме BLACKHOLE: платформа поднимает сервер к заданному моменту по cron-выражению, а саму задачу запускает собственный cron внутри уже поднятой машины — платформа не читает и не выполняет код приложения.

**На вытесняемом тарифе подъём — best-effort, не гарантия.** Сервер такого типа поднимается по мере освобождения ёмкости — через очередь, — поэтому к моменту окна свободного места может не оказаться, и окно может быть пропущено. Ответ создания и обновления окна несёт поле `preemptibleAdvisoryCode: "PREEMPTIBLE_BEST_EFFORT"` именно для этого случая — см. [Создать окно](./wake-schedules/create.md). Для задач, критичных ко времени, используйте невытесняемый тариф или режим «Всегда онлайн (24/7)».

Скоуп: `vibe:infra`

## Операции

- [Создать окно](./wake-schedules/create.md) — `POST /v1/infra/servers/:id/wake-schedules`
- [Список окон](./wake-schedules/list.md) — `GET /v1/infra/servers/:id/wake-schedules`
- [Обновить окно](./wake-schedules/update.md) — `PATCH /v1/infra/servers/:id/wake-schedules/:scheduleId`
- [Удалить окно](./wake-schedules/delete.md) — `DELETE /v1/infra/servers/:id/wake-schedules/:scheduleId`

## Сценарии

**Ночной отчёт по будням:**

1. [`POST /wake-schedules`](./wake-schedules/create.md) с `cronExpr: "0 9 * * 1-5"`, `timezone: "Europe/Moscow"`.
2. Ответ несёт `tzWarningCode: "SINGLE_ZONE"` — таймзона однозначна, при следующем деплое платформа сама передаст её в переменную окружения `TZ`.
3. Cron внутри сервера запускает задачу в 9:00 по московскому времени. На невытесняемом тарифе платформа гарантирует, что сервер к этому моменту уже поднят. На вытесняемом тарифе (ответ несёт `preemptibleAdvisoryCode: "PREEMPTIBLE_BEST_EFFORT"`) это best-effort: сервер поднимается по мере освобождения ёмкости, и при её нехватке окно может быть пропущено.

**Несколько окон в разных часовых поясах:**

1. Создать окна с разными значениями `timezone` для одного сервера.
2. Ответ каждой мутации несёт `tzWarningCode: "MULTI_ZONE"` — платформа не проставляет `TZ` автоматически, когда окна расходятся по поясам. Пишите обработку времени в приложении в UTC.

**Galaxy-приложение — увеличенный запас на подъём:**

1. Для сервера `kind: "GALAXY_APP"` указывайте `lead` с запасом на подъём хоста, туннеля и контейнера — до 900 секунд (15 минут), а не значение по умолчанию, рассчитанное на одиночный сервер.
2. Сам хост галактики (`kind: "GALAXY"`) окна не принимает — расписание объявляется на конкретном приложении, платформа при необходимости поднимает и хост.

## Смотрите также

- [Инфраструктура](/docs/infra)
- [Что приходит в приложение](/docs/infra/app-runtime) — таймзона деплоя и in-VM cron
- [Жизненный цикл](/docs/infra/lifecycle)
- [Журнал изменений](/docs/changelog)
