[ka6] snapshot pré-mission gus
1 changed file +14 −2
modified
jobka/connectors/jobillico.py
+14 −2
@@ -5,7 +5,7 @@ | |||||
| 5 | # Fichier : jobka/connectors/jobillico.py | 5 | # Fichier : jobka/connectors/jobillico.py | ||
| 6 | # Rôle : Connecteur portail — Jobillico (grand portail d'emploi québécois). | 6 | # Rôle : Connecteur portail — Jobillico (grand portail d'emploi québécois). | ||
| 7 | # AGRÉGATEUR : moins autoritaire qu'une page carrière (dedup). | 7 | # AGRÉGATEUR : moins autoritaire qu'une page carrière (dedup). | ||
| 8 | −# Créé : 2026-08-18 Modifié : 2026-08-25 | 8 | +# Créé : 2026-08-18 Modifié : 2026-09-10 | ||
| 9 | # ============================================================================= | 9 | # ============================================================================= | ||
| 10 | """Portail Jobillico (jobillico.com). | 10 | """Portail Jobillico (jobillico.com). | ||
| 11 | 11 | ||||
@@ -93,7 +93,19 @@ class JobillicoConnector(BaseConnector): | |||||
| 93 | # erreur serveur ponctuelle (520…) : cache périmé, | 93 | # erreur serveur ponctuelle (520…) : cache périmé, | ||
| 94 | # l'offre sera re-tentée au prochain cycle | 94 | # l'offre sera re-tentée au prochain cycle | ||
| 95 | fields = self.stale_detail(eid) | 95 | fields = self.stale_detail(eid) | ||
| 96 | − except (requests.ConnectionError, requests.Timeout): | 96 | + except requests.TooManyRedirects: | ||
| 97 | + # URL d'offre en boucle de redirections (canonique morte, | ||||
| 98 | + # constaté 2026-09-10 : « Exceeded 30 redirects » sur une | ||||
| 99 | + # page détail avortait le sync complet) — même traitement | ||||
| 100 | + # que 404/410 : offre sautée, retrait via miss_count | ||||
| 101 | + if fresh[0]: | ||||
| 102 | + details_used += 1 | ||||
| 103 | + continue | ||||
| 104 | + except requests.RequestException: | ||||
| 105 | + # toute autre erreur réseau/protocole sur UNE page détail | ||||
| 106 | + # (connexion, timeout, chunked…) : cache périmé, l'offre | ||||
| 107 | + # sera re-tentée au prochain cycle — jamais d'abandon du | ||||
| 108 | + # sync entier pour une seule offre | ||||
| 97 | fields = self.stale_detail(eid) | 109 | fields = self.stale_detail(eid) | ||
| 98 | if fresh[0]: | 110 | if fresh[0]: | ||
| 99 | details_used += 1 | 111 | details_used += 1 | ||
| 100 | 112 | ||||