From 47cb617e9ebba971154dd16a7fda0d1b69884391 Mon Sep 17 00:00:00 2001 From: idriz Date: Fri, 11 Sep 2026 18:55:10 +0200 Subject: [PATCH] =?UTF-8?q?Vaktija:=20dnevni=20pre-warming=20ke=C5=A1a=20u?= =?UTF-8?q?=2001:00=20(systemd=20timer)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW --- idriz/apps/vaktija/warm.py | 28 ++++++++++++++++++++++++++++ systemd/idriz-vaktija-warm.service | 9 +++++++++ systemd/idriz-vaktija-warm.timer | 9 +++++++++ 3 files changed, 46 insertions(+) create mode 100644 idriz/apps/vaktija/warm.py create mode 100644 systemd/idriz-vaktija-warm.service create mode 100644 systemd/idriz-vaktija-warm.timer diff --git a/idriz/apps/vaktija/warm.py b/idriz/apps/vaktija/warm.py new file mode 100644 index 0000000..73fec6b --- /dev/null +++ b/idriz/apps/vaktija/warm.py @@ -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()) diff --git a/systemd/idriz-vaktija-warm.service b/systemd/idriz-vaktija-warm.service new file mode 100644 index 0000000..37a2e70 --- /dev/null +++ b/systemd/idriz-vaktija-warm.service @@ -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 diff --git a/systemd/idriz-vaktija-warm.timer b/systemd/idriz-vaktija-warm.timer new file mode 100644 index 0000000..08ac28e --- /dev/null +++ b/systemd/idriz-vaktija-warm.timer @@ -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