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

Обработчик scheduled

Контекст

Когда Worker вызывается через Cron Trigger, scheduled() обработчик обрабатывает вызов.


Синтаксис

export default {
	async scheduled(controller, env, ctx) {
		await doSomeTaskOnASchedule();
	},
};
interface Env {}
export default {
	async scheduled(
		controller: ScheduledController,
		env: Env,
		ctx: ExecutionContext,
	) {
		await doSomeTaskOnASchedule();
	},
};
from workers import WorkerEntrypoint

class Default(WorkerEntrypoint):
    async def scheduled(self, controller, env, ctx):
        # controller.cron contains the cron pattern that triggered this event
        # controller.scheduledTime contains the scheduled time in ms since epoch
        print(f"Cron triggered: {controller.cron}")

Свойства

Обработка нескольких cron-триггеров

Когда вы настраиваете несколько Cron Triggers для одного Worker каждый триггер вызывает один и тот же scheduled() обработчик. Используйте controller.cron чтобы определить, какое расписание сработало, и выполнить для каждого свою логику.

{
	"triggers": {
		"crons": ["*/5 * * * *", "0 0 * * *"],
	},
}
[triggers]
crons = [ "*/5 * * * *", "0 0 * * *" ]
export default {
	async scheduled(controller, env, ctx) {
		switch (controller.cron) {
			case "*/5 * * * *":
				await fetch("https://example.com/api/sync");
				break;
			case "0 0 * * *":
				await env.MY_KV.put("last-cleanup", new Date().toISOString());
				break;
		}
	},
};
export default {
	async scheduled(
		controller: ScheduledController,
		env: Env,
		ctx: ExecutionContext,
	) {
		switch (controller.cron) {
			case "*/5 * * * *":
				await fetch("https://example.com/api/sync");
				break;
			case "0 0 * * *":
				await env.MY_KV.put("last-cleanup", new Date().toISOString());
				break;
		}
	},
} satisfies ExportedHandler<Env>;
from workers import WorkerEntrypoint, fetch
from datetime import datetime, timezone

class Default(WorkerEntrypoint):
    async def scheduled(self, controller, env, ctx):
        if controller.cron == "*/5 * * * *":
            await fetch("https://example.com/api/sync")
        elif controller.cron == "0 0 * * *":
            await env.MY_KV.put("last-cleanup", datetime.now(timezone.utc).isoformat())

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

Методы

Когда скрипт Workers вызывается Cron Trigger, среда выполнения Workers запускает ScheduledEvent который будет обработан scheduled функция в классе Workers Module. ctx аргумент представляет контекст, в котором выполняется ваша функция, и содержит следующие методы для управления дальнейшим поведением: