Refresh-Endpoint, Logging mit Timestamp, 12h-Intervall, PDF-Fehler-Logs
This commit is contained in:
20
app.py
20
app.py
@@ -18,7 +18,7 @@ from kantine2ical import BASE_URL, empty_ical_bytes, refresh_speiseplan
|
||||
|
||||
# Konfiguration (Umgebungsvariablen mit Fallback)
|
||||
KANTINE_BASE_URL = os.environ.get("KANTINE_BASE_URL", BASE_URL)
|
||||
REFRESH_INTERVAL_SECONDS = int(os.environ.get("REFRESH_INTERVAL_SECONDS", "86400")) # 24h
|
||||
REFRESH_INTERVAL_SECONDS = int(os.environ.get("REFRESH_INTERVAL_SECONDS", "43200")) # 12h
|
||||
# Öffentliche Basis-URL (z. B. https://kantine.elpatron.me), wenn Proxy keine X-Forwarded-* sendet
|
||||
PUBLIC_URL = os.environ.get("PUBLIC_URL", "").strip().rstrip("/")
|
||||
|
||||
@@ -60,7 +60,11 @@ def _refresh_loop() -> None:
|
||||
|
||||
|
||||
# Beim Import: einmal Refresh, Hintergrund-Thread starten (gilt auch für Gunicorn)
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S",
|
||||
)
|
||||
_log.info("Starte Speiseplan-Refresh beim Start ...")
|
||||
_do_refresh()
|
||||
_refresh_thread = threading.Thread(target=_refresh_loop, daemon=True)
|
||||
@@ -68,6 +72,18 @@ _refresh_thread.start()
|
||||
_log.info("Hintergrund-Refresh alle %s Sekunden.", REFRESH_INTERVAL_SECONDS)
|
||||
|
||||
|
||||
@app.route("/refresh")
|
||||
def refresh() -> Response:
|
||||
"""Manuellen Refresh auslösen (z. B. nach neuem Speiseplan auf kantine-bhz.de)."""
|
||||
_log.info("Manueller Refresh ausgelöst")
|
||||
_do_refresh()
|
||||
last = _format_last_refresh()
|
||||
return Response(
|
||||
f"Refresh ausgeführt. Zuletzt aktualisiert: {last or '–'}.\n",
|
||||
mimetype="text/plain; charset=utf-8",
|
||||
)
|
||||
|
||||
|
||||
@app.route("/calendar.ics")
|
||||
def calendar_ics() -> Response:
|
||||
"""iCal-Kalender ausliefern (für Abo-URL z. B. in Google Kalender)."""
|
||||
|
||||
Reference in New Issue
Block a user