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 realstar: retry (3 essais, backoff 5/10 s) sur 5xx Firecrawl dans _rendered — un 502 transitoire (vu 2026-08-21 et 2026-08-27) ne fait plus tomber tout le sync

Simon-Pierre Boucher committed 29 days ago (Aug 27, 2026) parent b2d36fa

1 changed file +16 −9

modified louka/connectors/realstar.py +16 −9
@@ -25,6 +25,7 @@ from __future__ import annotations
25 25 import hashlib
26 26 import os
27 27 import re
28 +import time
28 29
29 30 from bs4 import BeautifulSoup
30 31
@@ -104,15 +105,21 @@ class RealstarConnector(BaseConnector):
104 105 # Clé absente : on tente quand même (le rejeu des fixtures intercepte
105 106 # self.session ; en direct, Firecrawl répondra 401 -> erreur claire).
106 107 key = os.environ.get("FIRECRAWL_API_KEY", "")
107 − # via self.session : l'enregistreur de fixtures capture la réponse
108 − resp = self.session.post(
109 − FIRECRAWL_API,
110 − json={"url": url, "formats": ["html"], "waitFor": wait_ms},
111 − headers={"Authorization": f"Bearer {key}"},
112 − timeout=150,
113 − )
114 − resp.raise_for_status()
115 − return (resp.json().get("data") or {}).get("html", "")
108 + # Firecrawl renvoie parfois un 502 transitoire (2026-08-21 et
109 + # 2026-08-27) : un retry court évite de faire tomber tout le sync.
110 + for attempt in range(3):
111 + # via self.session : l'enregistreur de fixtures capture la réponse
112 + resp = self.session.post(
113 + FIRECRAWL_API,
114 + json={"url": url, "formats": ["html"], "waitFor": wait_ms},
115 + headers={"Authorization": f"Bearer {key}"},
116 + timeout=150,
117 + )
118 + if resp.status_code >= 500 and attempt < 2:
119 + time.sleep(5 * (attempt + 1))
120 + continue
121 + resp.raise_for_status()
122 + return (resp.json().get("data") or {}).get("html", "")
116 123
117 124 def fetch(self) -> list[Listing]:
118 125 self._renders = 0
119 126