mirror of
https://github.com/skoelle/calender_sync.git
synced 2026-09-17 18:20:24 +00:00
feat: add optional healthcheck URL ping after successful sync
This commit is contained in:
@@ -13,3 +13,6 @@ SYNC_INTERVAL_MINUTES=15
|
|||||||
WINDOW_PAST_DAYS=90
|
WINDOW_PAST_DAYS=90
|
||||||
WINDOW_FUTURE_DAYS=365
|
WINDOW_FUTURE_DAYS=365
|
||||||
LOG_LEVEL=INFO
|
LOG_LEVEL=INFO
|
||||||
|
|
||||||
|
# Optional: Healthchecks.io / Uptime Kuma URL (wird nach jedem Sync gepingt)
|
||||||
|
# HEALTHCHECK_URL=https://hc-ping.com/DEINE_UUID
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ services:
|
|||||||
- WINDOW_PAST_DAYS=${WINDOW_PAST_DAYS:-90}
|
- WINDOW_PAST_DAYS=${WINDOW_PAST_DAYS:-90}
|
||||||
- WINDOW_FUTURE_DAYS=${WINDOW_FUTURE_DAYS:-365}
|
- WINDOW_FUTURE_DAYS=${WINDOW_FUTURE_DAYS:-365}
|
||||||
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||||||
|
- HEALTHCHECK_URL=${HEALTHCHECK_URL:-}
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
- "com.centurylinklabs.watchtower.enable=true"
|
- "com.centurylinklabs.watchtower.enable=true"
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ SYNC_INTERVAL_MINUTES = int(os.environ.get("SYNC_INTERVAL_MINUTES", "15"))
|
|||||||
WINDOW_PAST_DAYS = int(os.environ.get("WINDOW_PAST_DAYS", "90"))
|
WINDOW_PAST_DAYS = int(os.environ.get("WINDOW_PAST_DAYS", "90"))
|
||||||
WINDOW_FUTURE_DAYS = int(os.environ.get("WINDOW_FUTURE_DAYS", "365"))
|
WINDOW_FUTURE_DAYS = int(os.environ.get("WINDOW_FUTURE_DAYS", "365"))
|
||||||
CALENDAR_LABEL = os.environ.get("CALENDAR_LABEL", "default")
|
CALENDAR_LABEL = os.environ.get("CALENDAR_LABEL", "default")
|
||||||
|
HEALTHCHECK_URL = os.environ.get("HEALTHCHECK_URL", "")
|
||||||
|
|
||||||
|
|
||||||
DB_BOOTSTRAP = os.environ.get("DB_BOOTSTRAP", "false").lower() == "true"
|
DB_BOOTSTRAP = os.environ.get("DB_BOOTSTRAP", "false").lower() == "true"
|
||||||
@@ -206,6 +207,16 @@ def mark_missing_as_deleted(cur, calendar_label, run_ts, window_start, window_en
|
|||||||
return cur.rowcount
|
return cur.rowcount
|
||||||
|
|
||||||
|
|
||||||
|
def ping_healthcheck():
|
||||||
|
if not HEALTHCHECK_URL:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
resp = requests.get(HEALTHCHECK_URL, timeout=10)
|
||||||
|
log.info("Healthcheck ping: %d", resp.status_code)
|
||||||
|
except Exception:
|
||||||
|
log.warning("Healthcheck ping fehlgeschlagen", exc_info=True)
|
||||||
|
|
||||||
|
|
||||||
def run_sync_once():
|
def run_sync_once():
|
||||||
run_ts = datetime.utcnow().replace(microsecond=0)
|
run_ts = datetime.utcnow().replace(microsecond=0)
|
||||||
window_start = run_ts - timedelta(days=WINDOW_PAST_DAYS)
|
window_start = run_ts - timedelta(days=WINDOW_PAST_DAYS)
|
||||||
@@ -227,6 +238,7 @@ def run_sync_once():
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
cur.close()
|
cur.close()
|
||||||
log.info("Sync fertig. %d Events als geloescht markiert.", deleted_count)
|
log.info("Sync fertig. %d Events als geloescht markiert.", deleted_count)
|
||||||
|
ping_healthcheck()
|
||||||
except MySQLError:
|
except MySQLError:
|
||||||
conn.rollback()
|
conn.rollback()
|
||||||
log.exception("DB-Fehler beim Sync, Rollback ausgefuehrt")
|
log.exception("DB-Fehler beim Sync, Rollback ausgefuehrt")
|
||||||
|
|||||||
Reference in New Issue
Block a user