IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

runner.ts

Buka raw
import "server-only";

import { getDueTasks, runScheduledTask } from "./service";

const POLL_INTERVAL_MS = 60_000;
const MAX_CONCURRENT_TASKS = 3;

let started = false;

export function startScheduledTaskRunner() {
  if (started) return;
  started = true;

  const tick = async () => {
    try {
      const dueTasks = await getDueTasks();

      // Run at most MAX_CONCURRENT_TASKS tasks simultaneously
      for (let i = 0; i < dueTasks.length; i += MAX_CONCURRENT_TASKS) {
        const batch = dueTasks.slice(i, i + MAX_CONCURRENT_TASKS);
        await Promise.allSettled(batch.map((task) => runScheduledTask(task.id)));
      }
    } catch {
      // don't crash the runner
    }
  };

  // Run immediately on startup, then every minute
  tick();
  setInterval(tick, POLL_INTERVAL_MS);
}
byte
794
baris
32
Jenis
ts
Commit terakhir
16 Oktober 2026