SPB Git

Repository Public

Commit

[ka2] fix connecteur kangalou: retry + timeout 90s sur le POST pins (~6 Mo) — ReadTimeout transitoire non couvert par l'escalade get()

Simon-Pierre Boucher committed · Aug 24, 2026 parent 521837e
1 changed file +15 −3 Browse files
modified louka/connectors/kangalou.py +15 −3
@@ -210,11 +210,23 @@ def _parse_fiche(html: str) -> dict:
210 class KangalouConnector(BaseConnector): 210 class KangalouConnector(BaseConnector):
211 source_id = "kangalou" 211 source_id = "kangalou"
212 request_delay = 0.5 212 request_delay = 0.5
213+ timeout = 90 # la réponse pins fait ~6 Mo
213 214
214 def _pins(self) -> list[dict]: 215 def _pins(self) -> list[dict]:
215− resp = self.post(PINS_API, data={"pinsOnly": "true"}, 216+ import time
216− headers={"Accept": "application/json", 217+ import requests
217− "X-Requested-With": "XMLHttpRequest"}) 218+ # le POST n'a pas l'escalade résiliente de get() : retenter les
219+ # lenteurs transitoires du site (ReadTimeout constaté 2026-08-24)
220+ for attempt in range(3):
221+ try:
222+ resp = self.post(PINS_API, data={"pinsOnly": "true"},
223+ headers={"Accept": "application/json",
224+ "X-Requested-With": "XMLHttpRequest"})
225+ break
226+ except (requests.ConnectionError, requests.Timeout):
227+ if attempt == 2:
228+ raise
229+ time.sleep(15 * (attempt + 1))
218 return (resp.json() or {}).get("pins") or [] 230 return (resp.json() or {}).get("pins") or []
219 231
220 @staticmethod 232 @staticmethod
221 233
Menu

Theme