From 05c39558eaf6c01c1c53ed17fa18e1ee8d4c5661 Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Sun, 19 Jan 2025 15:18:36 +0100 Subject: [PATCH] =?UTF-8?q?Die=20H=C3=A4ufigkeit=20der=20Ausf=C3=BChrung?= =?UTF-8?q?=20des=20Algorithmus=20kann=20nun=20gesteuert=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 + main.go | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f515f59..7ab6609 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,7 @@ services: - MAX_RESULTS=200 - DURATION=240 - DELETE_AFTER_MINUTES=30 + - UPDATE_INTERVAL_MINUTES=3 # Hildesheim HBF, Braunschweig HBF, Hannover HBF - STATION_IDS=8000169,8000049,8000152 restart: always diff --git a/main.go b/main.go index 0006945..3873ccd 100644 --- a/main.go +++ b/main.go @@ -78,6 +78,12 @@ func main() { } stationIDs := strings.Split(os.Getenv("STATION_IDS"), ",") + updateInterval, err := strconv.Atoi(os.Getenv("UPDATE_INTERVAL_MINUTES")) + if err != nil || updateInterval <= 0 { + log.Println("Ungültiger oder fehlender Wert für UPDATE_INTERVAL_MINUTES, verwende Standardwert von 1 Minute") + updateInterval = 1 + } + db, err := sql.Open("mysql", dbDSN) if err != nil { log.Fatal("Fehler beim Verbinden mit der Datenbank: ", err) @@ -85,25 +91,23 @@ func main() { defer db.Close() ticker := time.NewTicker(5 * time.Minute) + updateTicker := time.NewTicker(time.Duration(updateInterval) * time.Minute) defer ticker.Stop() + defer updateTicker.Stop() for { - for _, stationID := range stationIDs { - departures := fetchDepartures(apiBaseURL, stationID, duration) - for _, dep := range departures { - savePosition(db, dep, apiBaseURL) - } - } - deleteOldEntries(db, deleteAfter) - select { + case <-updateTicker.C: + for _, stationID := range stationIDs { + departures := fetchDepartures(apiBaseURL, stationID, duration) + for _, dep := range departures { + savePosition(db, dep, apiBaseURL) + } + } + deleteOldEntries(db, deleteAfter) case <-ticker.C: logDatabaseStats(db) - default: - // Do nothing } - - time.Sleep(1 * time.Minute) } }