← Cloudflare Workers / workers / configuration
Cron Triggers
Контекст
Cron Triggers позволяют пользователям привязать cron-выражение к Worker с помощью scheduled() обработчик который позволяет запускать Workers по расписанию.
Cron Triggers отлично подходят для запуска периодических задач, например для обслуживания или обращения к сторонним API за актуальными данными. Workers, запускаемые по расписанию Cron Triggers, выполняются на недогруженных машинах, что позволяет эффективно использовать мощности Cloudflare и рационально маршрутизировать трафик.
Cron Triggers выполняются по времени UTC.
Добавление Cron Trigger
1. Определите обработчик события по расписанию
Чтобы реагировать на Cron Trigger, нужно добавить "scheduled" обработчик в ваш Worker.
export default {
async scheduled(controller, env, ctx) {
console.log("cron processed");
},
};interface Env {}
export default {
async scheduled(
controller: ScheduledController,
env: Env,
ctx: ExecutionContext,
) {
console.log("cron processed");
},
};from workers import WorkerEntrypoint
class Default(WorkerEntrypoint):
async def scheduled(self, controller, env, ctx):
# All four parameters (self, controller, env, ctx) are required
print("cron processed")Дополнительные примеры кода см. ниже:
2. Обновление конфигурации
После того как вы обновили код своего Worker, включив в него "scheduled" событие, необходимо обновить конфигурацию проекта Worker.
Если Worker управляется через Wrangler, Cron Triggers следует настраивать исключительно через конфигурационный файл Wrangler.
Пример настройки Cron Triggers приведён ниже:
{
"triggers": {
// Schedule cron triggers:
// - At every 3rd minute
// - At 15:00 (UTC) on first day of the month
// - At 23:59 (UTC) on the last weekday of the month
"crons": [
"*/3 * * * *",
"0 15 1 * *",
"59 23 LW * *"
]
}
}[triggers]
crons = [ "*/3 * * * *", "0 15 1 * *", "59 23 LW * *" ]Также можно задать отдельный Cron Trigger для каждого окружение в вашем конфигурационный файл Wrangler. Необходимо поместить triggers массив в выбранном вами окружении. Например:
{
"env": {
"dev": {
"triggers": {
"crons": [
"0 * * * *"
]
}
}
}
}[env.dev.triggers]
crons = [ "0 * * * *" ]Через панель управления
Чтобы добавить Cron Triggers в панели управления Cloudflare:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
В Обзор, выберите ваш Worker > Настройки > Триггеры > Cron Triggers.
Поддерживаемые cron-выражения
Cloudflare поддерживает cron-выражения из пяти полей, а также большинство Планировщик Quartz ↗-подобные расширения синтаксиса cron:
| Поле | Значения | Символы |
|---|---|---|
| Минута | 0-59 | * , - / |
| Часы | 0-23 | * , - / |
| Дни месяца | 1-31 | * , - / L W |
| Месяцы | 1-12, 3-буквенные сокращения без учёта регистра ("JAN", "aug" и т. д.) | * , - / |
| Будние дни | 1-7, 3-буквенные сокращения без учёта регистра ("MON", "fri" и т. д.) | * , - / L # |
Примеры
Некоторые распространённые временные интервалы, которые могут пригодиться при настройке Cron Trigger:
-
* * * * *- Каждую минуту
-
*/30 * * * *- На каждой 30-й минуте
-
45 * * * *- На 45-й минуте каждого часа
-
0 17 * * sunили0 17 * * 1- 17:00 (UTC) в воскресенье
-
10 7 * * mon-friили10 7 * * 2-6- 07:10 (UTC) по будням
-
0 15 1 * *- 15:00 (UTC) в первый день месяца
-
0 18 * * 6Lили0 18 * * friL- 18:00 (UTC) в последнюю пятницу месяца
-
59 23 LW * *- 23:59 (UTC) в последний будний день месяца
Тестирование Cron Triggers локально
Тестирование Cron Triggers с помощью Wrangler и wrangler dev, либо используя Cloudflare Vite plugin ↗. Это предоставляет /cdn-cgi/handler/scheduled маршрут, который можно использовать для тестирования с помощью HTTP-запроса. Если вы используете Cloudflare Vite Plugin, убедитесь, что для следующих команд указан правильный порт vite (по умолчанию Vite использует 5173).
curl "http://localhost:8787/cdn-cgi/handler/scheduled"По умолчанию эндпоинт возвращает результат работы запланированного обработчика в виде текста. Чтобы получить
структурированный результат в формате JSON, передайте ?format=json.
curl "http://localhost:8787/cdn-cgi/handler/scheduled?format=json"{
"outcome": "ok",
"noRetry": false
} noRetry поле: true когда запланированный обработчик вызывает
controller.noRetry().
Чтобы смоделировать разные cron-шаблоны, cron параметр запроса можно передать.
curl "http://localhost:8787/cdn-cgi/handler/scheduled?cron=*+*+*+*+*"При необходимости можно также передать time параметр запроса для переопределения controller.scheduledTime в вашем обработчике события по расписанию.
curl "http://localhost:8787/cdn-cgi/handler/scheduled?cron=*+*+*+*+*&time=1745856238000"Просмотр прошлых событий
Чтобы просмотреть историю выполнения Cron Triggers, откройте Cron Events:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
В Обзор, выберите свой Worker.
-
Выберите Настройки.
-
В разделе Триггерные события, выберите Просмотр событий.
Cron Events хранит 100 последних вызовов запланированного события Cron. Workers Logs также записывает журналы вызовов Cron Trigger с более длительным сроком хранения и интерфейсом фильтрации и запросов. Если нужен API для доступа к Cron Events, используйте GraphQL Analytics API.
См. Метрики и аналитика, где это описано подробнее.
Удаление Cron Trigger
Через панель управления
Чтобы удалить Cron Trigger в развернутом Worker через панель управления:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите свой Worker.
-
Перейдите в Триггеры > выберите значок с тремя точками рядом с Cron Trigger, который нужно удалить > Удалить.
Если Worker управляется через Wrangler, Cron Triggers следует настраивать исключительно через конфигурационный файл Wrangler.
При развертывании Worker с помощью Wrangler все предыдущие Cron Triggers заменяются на те, что указаны в triggers массив.
- Если
cronsсвойство представляет собой пустой массив, все Cron Triggers удаляются. - Если
triggersилиcronsсвойстваundefinedто текущие развёрнутые Cron Triggers остаются без изменений.
{
"triggers": {
// Remove all cron triggers:
"crons": []
}
}[triggers]
crons = [ ]Лимиты
См. Лимиты для отслеживания максимального количества Cron Triggers на один Worker.
Green Compute
При включенном Green Compute ваши Cron Triggers будут выполняться только в тех точках присутствия Cloudflare, которые расположены в дата-центрах, работающих исключительно на возобновляемой энергии. Организация может заявлять, что использует 100 процентов возобновляемой энергии, если она закупила достаточно возобновляемой энергии для покрытия всего своего энергопотребления.
Возобновляемую энергию можно приобретать разными способами: за счёт собственной генерации на месте (ветряные турбины, солнечные панели), напрямую у производителей возобновляемой энергии по договорам, называемым Power Purchase Agreements (PPA), или в форме сертификатов возобновляемой энергии (REC, IRECs, GoOs) на рынке энергетических сертификатов.
Green Compute можно настроить на уровне аккаунта:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
В Данные аккаунта раздел, найдите Настройка вычислений.
-
Выберите Изменение.
-
Выберите Green Compute.
-
Выберите Подтверждение.
Дополнительные материалы
- Триггеры - Ознакомьтесь с синтаксисом конфигурационного файла Wrangler для Cron Triggers.
- Узнайте, как обращаться к Cron Triggers в синтаксис ES modules для оптимальной работы.