Vaktija: dnevni pre-warming keša u 01:00 (systemd timer)

- idriz/apps/vaktija/warm.py: zagrijava keš (danas + sutra) za konfigurisanu
  lokaciju (default Sarajevo).
- systemd/idriz-vaktija-warm.{service,timer}: oneshot + dnevni timer 01:00
  (Persistent=true da odradi i ako je mašina bila ugašena). Enabled kao user timer.

Odgovori o namazu su tako trenutni (bez čekanja na API pri prvom pitanju).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
This commit is contained in:
idriz
2026-09-11 18:55:10 +02:00
parent f2218e3237
commit 47cb617e9e
3 changed files with 46 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
"""Pre-warming keša vaktije za konfigurisanu lokaciju (danas + sutra).
Pokreće se dnevno u 01:00 preko systemd timera (idriz-vaktija-warm.timer), da
odgovori na pitanja o namazu budu trenutni (bez čekanja na API).
"""
import datetime as dt
import logging
import sys
from . import client, store
def main() -> int:
logging.basicConfig(level=logging.INFO,
format="%(asctime)s %(name)s %(levelname)s %(message)s", stream=sys.stderr)
log = logging.getLogger("idriz.vaktija.warm")
loc = store.get_location_id()
today = dt.date.today()
ok = 0
for d in (today, today + dt.timedelta(days=1)):
if client.fetch_vakat(loc, d):
ok += 1
log.info("zagrijan keš za %s (id %s): %d/2 dana", store.location_name(loc), loc, ok)
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Idriz - pre-warming keša vaktije (namaz) za default lokaciju
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
WorkingDirectory=%h/src/idriz
ExecStart=%h/src/idriz/.venv/bin/python -m idriz.apps.vaktija.warm

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Dnevno zagrijavanje keša vaktije u 01:00
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true
[Install]
WantedBy=timers.target