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 agence_sherbrooke: retry (3 essais, backoff 5/10 s) de la page liste — un raté transitoire (vu 2026-08-30 ~03:42) produisait un faux « 0 trouvé ok » (médiane 12) car le fetch hérité de DynamicConnector avale les exceptions et retourne [] sans cartes; wrapper de retry scopé au connecteur (la classe de base sert aussi dynamic et gestimmo_estrie), erreur franche après 3 essais infructueux au lieu d'un zéro silencieux. Testé: run.py sync agence_sherbrooke → 12 annonces (= médiane 12)

Simon-Pierre Boucher committed 26 days ago (Aug 30, 2026) parent 57f8cb0

1 changed file +17 −0

modified louka/connectors/agence_sherbrooke.py +17 −0
@@ -15,6 +15,9 @@
15 15 # -----------------------------------------------------------------------------
16 16 from __future__ import annotations
17 17
18 +import time
19 +
20 +from ..schema import Listing
18 21 from .dynamic import DynamicConnector
19 22
20 23
@@ -26,6 +29,20 @@ class AgenceSherbrookeConnector(DynamicConnector):
26 29 CITY_DEFAULT = "Sherbrooke"
27 30 max_pages = 6
28 31
32 + def fetch(self) -> list[Listing]:
33 + # Un raté transitoire de la page liste (vu 2026-08-30 ~03:42)
34 + # produisait un faux « 0 trouvé ok » (médiane 12) : le fetch hérité
35 + # avale les exceptions et retourne [] sans cartes. Retry court
36 + # (backoff 5/10 s), puis erreur franche plutôt qu'un zéro silencieux.
37 + for attempt in range(3):
38 + listings = super().fetch()
39 + if listings:
40 + return listings
41 + if attempt < 2:
42 + time.sleep(5 * (attempt + 1))
43 + raise RuntimeError(
44 + "0 annonce extraite de la page liste après 3 essais")
45 +
29 46 # -- crochets par site --------------------------------------------------------
30 47 def _card_availability(self, card, title: str) -> str:
31 48 """Agence : étiquette /label/ de la carte (« Libre maintenant »,
32 49