← Cloudflare Workers / workers / testing / miniflare / core
Запланированные события
Cron Triggers
scheduled события запускаются автоматически согласно заданным cron
триггерам:
const mf = new Miniflare({
crons: ["15 * * * *", "45 * * * *"],
});HTTP Triggers
Поскольку ждать срабатывания cron-триггеров неудобно, вы также можете отправлять HTTP-запросы
на /cdn-cgi/mf/scheduled для запуска scheduled события:
$ curl "http://localhost:8787/cdn-cgi/mf/scheduled"Чтобы смоделировать разные значения scheduledTime и cron в отправленном
событии используйте time и cron параметры запроса:
$ curl "http://localhost:8787/cdn-cgi/mf/scheduled?time=1000"
$ curl "http://localhost:8787/cdn-cgi/mf/scheduled?cron=*+*+*+*+*"Отправка событий
При использовании API getWorker функцию можно использовать для отправки
scheduled события в свой Worker. Это можно использовать для тестирования ответов. Он
принимает необязательные scheduledTime и cron параметры, которые по умолчанию равны
текущему времени и пустой строке соответственно. Функция вернёт промис, который
разрешается в массив с данными, возвращёнными всеми ожидаемыми промисами:
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 }