SPB Git

spb/job-ka

Public

[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

Simon-Pierre Boucher committed (Aug 26, 2026) parent 4b448ec Browse files

1 changed file +18 −1

Unified Split
modified jobka/connectors/base.py +18 −1
@@ -5,7 +5,7 @@
5 # Fichier : jobka/connectors/base.py 5 # Fichier : jobka/connectors/base.py
6 # Rôle : Classe de base des connecteurs + backends de fetch (requests 6 # Rôle : Classe de base des connecteurs + backends de fetch (requests
7 # direct, Scrapfly pour les pages carrières JS / derrière anti-bot) 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 from __future__ import annotations 10 from __future__ import annotations
11 11
@@ -236,6 +236,23 @@ if not getattr(BaseConnector, "_KA_RESILIENT_WRAPPED", False):
236 country=country, render_js=render_js, 236 country=country, render_js=render_js,
237 headers=headers) 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 BaseConnector.get = _ka_resilient_get 255 BaseConnector.get = _ka_resilient_get
256+ BaseConnector.post = _ka_resilient_post
240 BaseConnector.get_resilient = _ka_get_resilient 257 BaseConnector.get_resilient = _ka_get_resilient
241 BaseConnector._KA_RESILIENT_WRAPPED = True 258 BaseConnector._KA_RESILIENT_WRAPPED = True
242 259
Menu

Theme