From b4d47901b6e065af940492dc466a13af833539fd Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Fri, 5 Jun 2026 04:12:21 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20worker=20in-process=20de=20refresh=20p?= =?UTF-8?q?=C3=A9riodique=20(croner)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- server/jobs/worker.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 server/jobs/worker.ts diff --git a/server/jobs/worker.ts b/server/jobs/worker.ts new file mode 100644 index 0000000..1fdc2e3 --- /dev/null +++ b/server/jobs/worker.ts @@ -0,0 +1,24 @@ +// server/jobs/worker.ts +import { Cron } from "croner"; +import { listMachines } from "../services/machines.js"; +import { refreshMachine } from "../services/refresh.js"; + +let job: Cron | null = null; + +/** Rafraîchit toutes les machines toutes les 30 minutes (tâche de fond). */ +export function startWorker(): void { + job = new Cron("*/30 * * * *", async () => { + for (const m of listMachines()) { + try { + await refreshMachine(m.id); + } catch (err) { + console.error(`[worker] refresh échoué pour ${m.id}:`, (err as Error).message); + } + } + }); +} + +export function stopWorker(): void { + job?.stop(); + job = null; +}