Spec-Zone.ru › Deno 2

Cron

Deno.cron() — это API среды выполнения Deno для планирования регулярного запуска кода JavaScript или TypeScript с использованием синтаксиса cron. Он встроен в сам Deno, поэтому один и тот же код можно запускать локально и развёртывать без изменений.

Deno.cron в настоящее время является нестабильным API. Чтобы использовать его локально с deno run, включите флаг --unstable-cron (или добавьте "cron" в массив unstable в deno.json).

›_
deno run --unstable-cron main.ts

Справочник API Deno.cron

Определение задания cron

Deno.cron() принимает понятное человеку имя, расписание и функцию-обработчик. Имя идентифицирует задание cron в журналах, расписание определяет время запуска обработчика, а все значения времени указаны в UTC.

Deno.cron("log-a-message", "* * * * *", () => {
  console.log("This runs once a minute.");
});

Выражение cron из 5 полей содержит по одному полю на единицу времени; поля разделяются пробелами:

›_
┌──────────── minute (0-59)
│ ┌────────── hour (0-23)
│ │ ┌──────── day of month (1-31)
│ │ │ ┌────── month (1-12 or JAN-DEC)
│ │ │ │ ┌──── day of week (0-6 or SUN-SAT, where 0 is Sunday)
│ │ │ │ │
* * * * *

В каждом поле допускается точное значение, * (любое значение), диапазон (1-5), список (1,3,5) или шаг (*/15 — каждое пятнадцатое значение). Например, 0 9 * * MON-FRI выполняется в 09:00 UTC по будням.

Расписание может быть задано стандартным выражением cron из 5 полей или структурированным объектом:

Deno.cron("hourly-task", { hour: { every: 1 } }, () => {
  console.log("This runs once an hour.");
});

Задания cron необходимо регистрировать на верхнем уровне модуля до запуска любого сервера. Определения, вложенные в обработчики запросов, условные конструкции или обратные вызовы, не будут обнаружены.

Повторные попытки и задержка между ними

По умолчанию неудачные вызовы обработчика не повторяются. Передайте backoffSchedule (массив задержек в миллисекундах), чтобы повторять вызов при сбое:

Deno.cron(
  "retry-example",
  "* * * * *",
  { backoffSchedule: [1000, 5000, 10000] },
  () => {
    throw new Error("Will be retried up to three times.");
  },
);

Запуск заданий cron в рабочей среде

Deno.cron хранит состояние выполнения в памяти Deno CLI, а значит, каждый процесс поддерживает собственный независимый набор задач cron. Для рабочих нагрузок в production Deno Deploy расширяет этот API среды выполнения: обнаруживает определения Deno.cron() во время развёртывания, планирует и запускает их, обрабатывает повторные попытки и отображает запуски на панели управления — поэтому вам не нужно самостоятельно поддерживать постоянно работающий процесс.

OpenTelemetry

При включённом OpenTelemetry (OTEL_DENO=true) каждый вызов Deno.cron() автоматически создаёт интервал OpenTelemetry. Это позволяет отслеживать выполнение cron наряду с другим инструментированным кодом:

›_
OTEL_DENO=true deno run --unstable-cron main.ts

Каждый вызов cron создаёт интервал с именем задания cron. Интервал охватывает время выполнения функции-обработчика, а любые интервалы, созданные внутри обработчика, становятся его дочерними интервалами.

Последнее обновление: 18 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/fundamentals/cron

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API