From 8d5ba035a90c41d16595fba83eb1fbb21596e41d Mon Sep 17 00:00:00 2001 From: Israel Figueroa Date: Sun, 1 Oct 2023 21:28:17 -0300 Subject: [PATCH] double ingester --- sync.py | 7 +++++-- updater/main.py | 33 ++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/sync.py b/sync.py index 6f72288..ae28dd1 100644 --- a/sync.py +++ b/sync.py @@ -1,11 +1,13 @@ # coding: utf-8 from updater.model.feed import init_db, db, engine -from updater.main import sync_db, log +from updater.main import sync_db, log, estado_maximo import time +import random if __name__ == '__main__': init_db(db, engine) doki = int(time.time()) + 600 + time.sleep(random.randint(1, 30)) #random wait while True: if not sync_db(): @@ -13,6 +15,7 @@ if __name__ == '__main__': if i >= doki: doki = i + 600 log.info('Heartbeat') - time.sleep(20) + if estado_maximo == 0: + time.sleep(random.randint(10, 30)) #more randomness else: doki = int(time.time()) + 600 diff --git a/updater/main.py b/updater/main.py index 648cb36..f78b7b6 100644 --- a/updater/main.py +++ b/updater/main.py @@ -1,7 +1,8 @@ from updater.model.feed import db, Registros, Vehiculo, Viaje, Entidades, Posicion import utils.gtfs_realtime_pb2 from time import strftime -from datetime import datetime +from datetime import datetime, timedelta +from zoneinfo import ZoneInfo import logging import json import time @@ -17,16 +18,34 @@ formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) log.addHandler(handler) + +try: + estado_maximo = int(os.environ.get('GTFS_RT_FEED_MAXSTATUS')) +except: + log.warning("failed to load GTFS_RT_FEED_MAXSTATUS enviroment variable, setting default value") + estado_maximo = 0 + +try: + antiguedad_minima = int(os.environ.get('GTFS_RT_MIN_DELAY')) +except: + log.warning("failed to load GTFS_RT_MIN_DELAY enviroment variable, setting default value") + antiguedad_minima = 0 + + + def sync_db(): - inicio = datetime.now() - registrodb = db.query(Registros).filter(Registros.status<5).order_by(Registros.id.asc()).first() + inicio = datetime.now(tz=ZoneInfo("America/Santiago")) + + ultima_modificacion = inicio - timedelta(0,antiguedad_minima) + + + registrodb = db.query(Registros).filter(Registros.status<=estado_maximo, Registros.timestamp