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

Запланированные события

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 }