[ka6] fix connecteur sysco: relances sur timeout/coupure réseau pour les POST (base.py) — un ReadTimeout ponctuel de l'API liste Workday avortait tout le sync; get() avait déjà son filet (escalade), post() n'en avait aucun
1 changed file +18 −1
modified
jobka/connectors/base.py
+18 −1
@@ -5,7 +5,7 @@ | ||
| 5 | 5 | # Fichier : jobka/connectors/base.py |
| 6 | 6 | # Rôle : Classe de base des connecteurs + backends de fetch (requests |
| 7 | 7 | # direct, Scrapfly pour les pages carrières JS / derrière anti-bot) |
| 8 | −# Créé : 2026-08-17 Modifié : 2026-08-17 | |
| 8 | +# Créé : 2026-08-17 Modifié : 2026-08-26 | |
| 9 | 9 | # ============================================================================= |
| 10 | 10 | from __future__ import annotations |
| 11 | 11 | |
@@ -236,6 +236,23 @@ if not getattr(BaseConnector, "_KA_RESILIENT_WRAPPED", False): | ||
| 236 | 236 | country=country, render_js=render_js, |
| 237 | 237 | headers=headers) |
| 238 | 238 | |
| 239 | + _ka_orig_post = BaseConnector.post | |
| 240 | + | |
| 241 | + def _ka_resilient_post(self, url, **kw): | |
| 242 | + """POST avec relances : un timeout/coupure ponctuel (ex. Workday lent | |
| 243 | + sur l'API liste) ne doit pas avorter tout le sync de la source — la | |
| 244 | + chaîne d'escalade proxy est GET-only, on relance donc en direct.""" | |
| 245 | + last_exc = None | |
| 246 | + for attempt in range(3): | |
| 247 | + try: | |
| 248 | + return _ka_orig_post(self, url, **kw) | |
| 249 | + except (_ka_requests.ConnectionError, _ka_requests.Timeout) as exc: | |
| 250 | + last_exc = exc | |
| 251 | + if attempt < 2: | |
| 252 | + time.sleep(5 * (attempt + 1)) | |
| 253 | + raise last_exc | |
| 254 | + | |
| 239 | 255 | BaseConnector.get = _ka_resilient_get |
| 256 | + BaseConnector.post = _ka_resilient_post | |
| 240 | 257 | BaseConnector.get_resilient = _ka_get_resilient |
| 241 | 258 | BaseConnector._KA_RESILIENT_WRAPPED = True |
| 242 | 259 | |