Commit
[ka2] fix connecteur kangalou: retry + timeout 90s sur le POST pins (~6 Mo) — ReadTimeout transitoire non couvert par l'escalade get()
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 | ||