INTEGRITY Документация

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.

Через конфигурационный файл Wrangler

Если 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:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. В Обзор, выберите ваш 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:

Тестирование 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:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. В Обзор, выберите свой Worker.

  3. Выберите Настройки.

  4. В разделе Триггерные события, выберите Просмотр событий.

Cron Events хранит 100 последних вызовов запланированного события Cron. Workers Logs также записывает журналы вызовов Cron Trigger с более длительным сроком хранения и интерфейсом фильтрации и запросов. Если нужен API для доступа к Cron Events, используйте GraphQL Analytics API.

См. Метрики и аналитика, где это описано подробнее.

Удаление Cron Trigger

Через панель управления

Чтобы удалить Cron Trigger в развернутом Worker через панель управления:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Выберите свой Worker.

  3. Перейдите в Триггеры > выберите значок с тремя точками рядом с Cron Trigger, который нужно удалить > Удалить.

Через конфигурационный файл Wrangler

Если Worker управляется через Wrangler, Cron Triggers следует настраивать исключительно через конфигурационный файл Wrangler.

При развертывании Worker с помощью Wrangler все предыдущие Cron Triggers заменяются на те, что указаны в 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 можно настроить на уровне аккаунта:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. В Данные аккаунта раздел, найдите Настройка вычислений.

  3. Выберите Изменение.

  4. Выберите Green Compute.

  5. Выберите Подтверждение.