Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

スケジュールイベント

最終更新 Markdown で表示Agent セットアップ

Cron Triggers

scheduled イベントは、指定した Cron Triggers に従って自動でディスパッチされます。

const mf = new Miniflare({
	crons: ["15 * * * *", "45 * * * *"],
});

HTTP Triggers

Cron Triggers を待つのは面倒なので、/cdn-cgi/local/scheduled へ HTTP リクエストを送って scheduled イベントを発火することもできます。

$ curl "http://localhost:8787/cdn-cgi/local/scheduled"

ディスパッチされるイベントの scheduledTimecron に別の値をシミュレートするには、timecron クエリパラメーターを使います。

$ curl "http://localhost:8787/cdn-cgi/local/scheduled?time=1000"
$ curl "http://localhost:8787/cdn-cgi/local/scheduled?cron=*+*+*+*+*"

イベントのディスパッチ

API を使う場合、getWorker 関数で Worker に scheduled イベントをディスパッチできます。レスポンスのテストに使えます。省略可能な scheduledTimecron パラメーターを取り、それぞれ現在時刻と空文字列がデフォルトです。待機した Promise が返したデータを含む配列に解決する Promise を返します。

import { Miniflare } from "miniflare";

const mf = new Miniflare({
	modules: true,
	script: `
  export default {
    async scheduled(controller, env, ctx) {
      const lastScheduledController = controller;
      if (controller.cron === "* * * * *") controller.noRetry();
    }
  }
  `,
});

const worker = await mf.getWorker();

let scheduledResult = await worker.scheduled({
	cron: "* * * * *",
});
console.log(scheduledResult); // { outcome: 'ok', noRetry: true }

scheduledResult = await worker.scheduled({
	scheduledTime: new Date(1000),
	cron: "30 * * * *",
});

console.log(scheduledResult); // { outcome: 'ok', noRetry: false }

役に立ちましたか?