SPB Git forge

spb/lou-ka

Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

232commits 1branches 0releases
172.9 MBsize
maindefault branch
2 days agolast push
HTML 98.9% Python 0.6%

[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 1 mo ago (Aug 24, 2026) parent 521837e

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