SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
1 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%

[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 29 days ago (Aug 26, 2026) parent 4b448ec

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