fix: correct configmap yaml structure with retry logic

This commit is contained in:
2026-04-19 17:17:43 +02:00
parent ee948aefd3
commit dc42762e1d
+33 -27
View File
@@ -1,16 +1,22 @@
import os
import time
from datetime import date, timedelta
import psycopg2
from garminconnect import Garmin
apiVersion: v1
kind: ConfigMap
metadata:
name: garmin-sync-script
namespace: garmin
data:
sync.py: |
import os
import time
from datetime import date, timedelta
import psycopg2
from garminconnect import Garmin
email = os.environ["GARMIN_EMAIL"]
password = os.environ["GARMIN_PASSWORD"]
db_url = os.environ["DATABASE_URL"]
email = os.environ["GARMIN_EMAIL"]
password = os.environ["GARMIN_PASSWORD"]
db_url = os.environ["DATABASE_URL"]
# Retry-Login bei 429
client = Garmin(email, password)
for attempt in range(5):
client = Garmin(email, password)
for attempt in range(5):
try:
client.login()
print(f"Login erfolgreich (Versuch {attempt + 1})")
@@ -22,20 +28,20 @@ for attempt in range(5):
time.sleep(wait)
else:
raise
else:
else:
raise Exception("Login nach 5 Versuchen fehlgeschlagen")
today = date.today()
start = today - timedelta(days=365 * 3)
today = date.today()
start = today - timedelta(days=365 * 3)
activities = client.get_activities_by_date(
activities = client.get_activities_by_date(
start.isoformat(), today.isoformat()
)
)
conn = psycopg2.connect(db_url)
cur = conn.cursor()
conn = psycopg2.connect(db_url)
cur = conn.cursor()
cur.execute("""
cur.execute("""
CREATE TABLE IF NOT EXISTS activities (
id BIGINT PRIMARY KEY,
name TEXT,
@@ -57,9 +63,9 @@ cur.execute("""
hr_zone_4 FLOAT,
hr_zone_5 FLOAT
)
""")
""")
cur.execute("""
cur.execute("""
ALTER TABLE activities
ADD COLUMN IF NOT EXISTS max_hr INTEGER,
ADD COLUMN IF NOT EXISTS vo2max FLOAT,
@@ -72,9 +78,9 @@ cur.execute("""
ADD COLUMN IF NOT EXISTS hr_zone_3 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_4 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_5 FLOAT
""")
""")
for a in activities:
for a in activities:
cur.execute("""
INSERT INTO activities
(id, name, type, start_time, duration_seconds, distance_meters,
@@ -119,7 +125,7 @@ for a in activities:
a.get("hrTimeInZone_5"),
))
conn.commit()
cur.close()
conn.close()
print(f"Synced {len(activities)} activities")
conn.commit()
cur.close()
conn.close()
print(f"Synced {len(activities)} activities")