Push-Scheduler: auf volle Minute synchronisiert

This commit is contained in:
2026-05-28 19:31:11 +02:00
parent c8e6974dc7
commit d475c8f64f

View File

@@ -82,7 +82,14 @@ async function sendPushoverMsg(userKey, appToken, message) {
} catch(e) { console.error('Pushover Fehler:', e.message); } } catch(e) { console.error('Pushover Fehler:', e.message); }
} }
setInterval(async () => { // Beim Start auf die nächste volle Minute synchronisieren
const msToNextMinute = (60 - new Date().getSeconds()) * 1000 - new Date().getMilliseconds();
setTimeout(() => {
runScheduler();
setInterval(runScheduler, 60 * 1000);
}, msToNextMinute);
async function runScheduler() {
try { try {
const now = db.prepare("SELECT datetime('now','localtime') as t").get().t; const now = db.prepare("SELECT datetime('now','localtime') as t").get().t;
const due = db.prepare(` const due = db.prepare(`
@@ -91,13 +98,12 @@ setInterval(async () => {
JOIN pushover_settings p ON p.user_id = s.user_id JOIN pushover_settings p ON p.user_id = s.user_id
WHERE s.sent = 0 AND s.scheduled_at <= ? WHERE s.sent = 0 AND s.scheduled_at <= ?
`).all(now); `).all(now);
for (const row of due) { for (const row of due) {
await sendPushoverMsg(row.user_key, row.app_token, row.message); await sendPushoverMsg(row.user_key, row.app_token, row.message);
db.prepare('UPDATE push_schedules SET sent=1 WHERE id=?').run(row.id); db.prepare('UPDATE push_schedules SET sent=1 WHERE id=?').run(row.id);
console.log(`✓ Push gesendet an user ${row.user_id}: "${row.message}" (fällig: ${row.scheduled_at})`); console.log(`✓ Push gesendet an user ${row.user_id}: "${row.message}" (fällig: ${row.scheduled_at})`);
} }
} catch(e) { console.error('Push-Job Fehler:', e.message); } } catch(e) { console.error('Push-Job Fehler:', e.message); }
}, 60 * 1000); }
console.log('⏰ Push-Scheduler aktiv (jede Minute)'); console.log(`⏰ Push-Scheduler aktiv nächste Prüfung in ${Math.round(msToNextMinute/1000)}s`);