SPB Git

spb/job-ka

Public

[ka6] fix connecteur jobillico: un 410/404 sur une page détail (offre retirée entre le sitemap et la visite) n'avorte plus tout le sync — skip de l'offre; erreurs serveur/réseau ponctuelles → repli cache périmé (pattern guichet_emplois)

Simon-Pierre Boucher committed (Aug 25, 2026) parent dd39839 Browse files

1 changed file +18 −2

Unified Split
modified jobka/connectors/jobillico.py +18 −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-18 8+# Créé : 2026-08-18 Modifié : 2026-08-25
9 # ============================================================================= 9 # =============================================================================
10 """Portail Jobillico (jobillico.com). 10 """Portail Jobillico (jobillico.com).
11 11
@@ -23,6 +23,8 @@ from __future__ import annotations
23 import os 23 import os
24 import re 24 import re
25 25
26+import requests
27+
26 from ..schema import JobPosting, is_quebec_location 28 from ..schema import JobPosting, is_quebec_location
27 from .base import BaseConnector 29 from .base import BaseConnector
28 from . import _jsonld 30 from . import _jsonld
@@ -78,7 +80,21 @@ class JobillicoConnector(BaseConnector):
78 fresh[0] = True 80 fresh[0] = True
79 return self._fetch_detail(u) 81 return self._fetch_detail(u)
80 82
81− fields = self.detail(eid, key, _fn) 83+ try:
84+ fields = self.detail(eid, key, _fn)
85+ except requests.HTTPError as exc:
86+ code = getattr(exc.response, "status_code", 0)
87+ if code in (404, 410):
88+ # offre retirée entre le sitemap et la visite —
89+ # normal et non bloquant : on saute cette offre
90+ if fresh[0]:
91+ details_used += 1
92+ continue
93+ # erreur serveur ponctuelle (520…) : cache périmé,
94+ # l'offre sera re-tentée au prochain cycle
95+ fields = self.stale_detail(eid)
96+ except (requests.ConnectionError, requests.Timeout):
97+ fields = self.stale_detail(eid)
82 if fresh[0]: 98 if fresh[0]:
83 details_used += 1 99 details_used += 1
84 else: 100 else:
85 101
Menu

Theme