INTEGRITY Dokumentace

Naplánovaný handler

Kontext

Když je Worker vyvolán přes Cron Trigger, scheduled() handler zpracovává vyvolání.


Syntaxe

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}")

Vlastnosti

Zpracování více cron triggerů

Když nakonfigurujete více Cron Triggers pro jeden Worker, každý spouštěč volá stejný scheduled() handler. Použijte controller.cron abyste rozlišili, který plán se spustil, a pro každý z nich spustili jinou logiku.

{
	"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())

Hodnota controller.cron je přesný řetězec cron výrazu z vaší konfigurace. Musí se shodovat znak po znaku, včetně mezer.

Metody

Když je skript Workeru vyvolán přes Cron Trigger, runtime Workers spustí ScheduledEvent což bude zpracováno scheduled funkci ve třídě modulu Workers. ctx argument představuje kontext, ve kterém vaše funkce běží, a obsahuje následující metody pro řízení toho, co se stane dále: