SPB Git

spb/fabri-ka

Public

Agrégateur de produits québécois — www.fabri-ka.com

Revert "[ka6] fix connecteur fermeail-land.com: 3e application du garde-fou _domain_nxdomain (revert du revert 0c218c4, qui avait annulé la 2e application 32f0f06 ~8 h après — fix perdu 2×). Cause racine re-vérifiée live le 2026-10-14 ~15h: le domaine est TOUJOURS en NXDOMAIN mondial (expiré 2026-10-12 22:50 UTC, clientHold Tucows 2026-10-13 08:48 UTC, retiré de la zone .com) — DoH dns.google Status 3 (hôte ET www), DoH Cloudflare Status 3, curl direct exit 6 « Could not resolve host ». Sans le garde-fou, le RuntimeError (direct irrésoluble + Scrapfly 422) redonne 3 échecs consécutifs → broken. Réapplication par git revert -n de 0c218c4: fichier shopify.py strictement identique à l'état validé 32f0f06/31a6cac (diff vide vérifié) — ShopifyConnector._domain_nxdomain() (NXDOMAIN exigé en DoH dns.google sur l'hôte ET l'apex) + dans fetch(), sur RuntimeError sans produit accumulé, si NXDOMAIN confirmé → return [] → ok/0 FIDÈLE (boutique jamais garnie, médiane 0.0). Échec réseau sans NXDOMAIN → erreur propagée, aucun masquage. Sync réel 2026-10-14: fermeail-land.com ok / 0 produit (55 s); non-régression arthicetnunc.com ok / 24 produits (chemin Shopify nominal intact, _StorefrontLockedError inchangé). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que fermeail-land.com est NXDOMAIN (re-sonder DoH avant tout revert): si la ferme renouvelle le domaine (grâce registrar ~30-45 j), le DNS revient et le connecteur reprend tout seul sans toucher la fiche."

This reverts commit 4f918bb3c5038b37c040c0787cf392b3abaf7c88.
Simon-Pierre Boucher committed (Oct 15, 2026) parent 4f918bb Browse files

1 changed file +0 −34

Unified Split
modified fabrika/connectors/shopify.py +0 −34
@@ -110,30 +110,6 @@ class ShopifyConnector(BaseConnector):
110 110 time.sleep(3 * (attempt + 1))
111 111 raise RuntimeError(f"{url}: scrapfly: {last_err}")
112 112
113 − def _domain_nxdomain(self) -> bool:
114 − """True si le domaine a disparu du DNS mondial : NXDOMAIN (Status 3)
115 − chez un résolveur public pour l'hôte ET son apex — typiquement un
116 − domaine expiré mis en clientHold par le registrar, donc retiré de la
117 − zone (ex. fermeail-land.com, expiré 2026-10-12, clientHold Tucows le
118 − 13). Vérifié en DNS-over-HTTPS (dns.google) pour ne pas confondre avec
119 − une panne du résolveur local du nœud ; en cas de doute (DoH
120 − injoignable, Status != 3) on renvoie False et l'erreur se propage —
121 − pas de masquage. Même philosophie que _wix_domain_nxdomain (524c743)."""
122 − import urllib.parse as _up
123 −
124 − import requests as _requests
125 − host = (_up.urlsplit(self.base).netloc or self.base).split(":")[0]
126 − apex = host[4:] if host.startswith("www.") else host
127 − for name in {host, apex}:
128 − try:
129 − r = _requests.get("https://dns.google/resolve",
130 − params={"name": name, "type": "A"}, timeout=15)
131 − if r.json().get("Status") != 3:
132 − return False
133 − except (ValueError, _requests.RequestException):
134 − return False
135 − return True
136 −
137 113 def fetch(self) -> list[Product]:
138 114 out: list[Product] = []
139 115 page = 1
@@ -146,16 +122,6 @@ class ShopifyConnector(BaseConnector):
146 122 raise
147 123 except _StorefrontLockedError:
148 124 break
149 − except RuntimeError:
150 − # Échec sans aucun produit accumulé : si le domaine a carrément
151 − # disparu du DNS mondial (expiration + clientHold registrar,
152 − # ex. fermeail-land.com 2026-10-13 — curl « Could not resolve
153 − # host », Scrapfly 422), la boutique n'existe plus à cette
154 − # adresse : catalogue vide fidèle. Sans ce marqueur, on propage
155 − # l'erreur comme avant (pas de masquage).
156 − if not out and self._domain_nxdomain():
157 − break
158 − raise
159 125 items = data.get("products", [])
160 126 if not items:
161 127 break
162 128
Menu

Theme