[ka2] fix connecteur kangalou: retry + timeout 90s sur le POST pins (~6 Mo) — ReadTimeout transitoire non couvert par l'escalade get()
1 changed file +15 −3
modified
louka/connectors/kangalou.py
+15 −3
@@ -210,11 +210,23 @@ def _parse_fiche(html: str) -> dict: | ||
| 210 | 210 | class KangalouConnector(BaseConnector): |
| 211 | 211 | source_id = "kangalou" |
| 212 | 212 | request_delay = 0.5 |
| 213 | + timeout = 90 # la réponse pins fait ~6 Mo | |
| 213 | 214 | |
| 214 | 215 | def _pins(self) -> list[dict]: |
| 215 | − resp = self.post(PINS_API, data={"pinsOnly": "true"}, | |
| 216 | − headers={"Accept": "application/json", | |
| 217 | − "X-Requested-With": "XMLHttpRequest"}) | |
| 216 | + import time | |
| 217 | + import requests | |
| 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 | 230 | return (resp.json() or {}).get("pins") or [] |
| 219 | 231 | |
| 220 | 232 | @staticmethod |
| 221 | 233 | |