[ka2] fix connecteur c21_ab: sommeil adaptatif de la boucle watch (cycle > 24 h) + restart sync
Les 11 sources c21_* etaient stale car house-ka-sync (pm2) tournait depuis avant le commit c9b9b3f qui les a ajoutees : le registre en memoire ne contenait que les 15 sources RealtyPress. Restart pm2 -> les c21 sont de nouveau planifiees (la passe commence par c21_bc/c21_ab). En plus, watch() dormait 240 min fixes apres une passe qui dure deja ~20 h (30 sources), soit un cycle > 24 h qui refranchirait le seuil stale de la supervision. Le sommeil devient adaptatif : max(60 s, intervalle - duree de la passe). Test reel : run.py sync c21_ab -> found=26966 (mediane 26760), 584 ajoutees, 26047 mises a jour, 679 s.
1 changed file +7 −2
modified
immoka/ingest.py
+7 −2
@@ -92,6 +92,7 @@ def watch(interval_seconds: int = 3600) -> None: | ||
| 92 | 92 | quand data/vraiprix.db (ou VRAIPRIX_DB) est disponible. |
| 93 | 93 | """ |
| 94 | 94 | while True: |
| 95 | + cycle_t0 = time.time() | |
| 95 | 96 | run() |
| 96 | 97 | try: # nouvelles adresses → coordonnées (cache : quasi gratuit ensuite) |
| 97 | 98 | from . import geocode |
@@ -115,5 +116,9 @@ def watch(interval_seconds: int = 3600) -> None: | ||
| 115 | 116 | mortgage_scheduler.maybe_run() |
| 116 | 117 | except Exception as exc: |
| 117 | 118 | print(f"[immo-ka] mortgage: erreur non bloquante: {exc}", file=sys.stderr) |
| 118 | − print(f"[immo-ka] prochaine synchronisation dans {interval_seconds // 60} min") | |
| 119 | − time.sleep(interval_seconds) | |
| 119 | + # sommeil ADAPTATIF : une passe complète peut durer des heures (30 | |
| 120 | + # sources) — un sleep fixe par-dessus ferait dépasser 24 h de cadence | |
| 121 | + # et la supervision marquerait toutes les sources « stale ». | |
| 122 | + delay = max(60, interval_seconds - int(time.time() - cycle_t0)) | |
| 123 | + print(f"[immo-ka] prochaine synchronisation dans {delay // 60} min") | |
| 124 | + time.sleep(delay) | |
| 120 | 125 | |