From 4ee4c50f5f50429160bea4a38b62c59796a26501 Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Tue, 19 Mar 2024 00:45:18 +0100
Subject: [PATCH] =?UTF-8?q?RAAspotter:=20temporise=20en=20cas=20d'erreur?=
 =?UTF-8?q?=20r=C3=A9seau?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 RAAspotter.py | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/RAAspotter.py b/RAAspotter.py
index a51222c..8b8e7a2 100644
--- a/RAAspotter.py
+++ b/RAAspotter.py
@@ -211,17 +211,29 @@ class RAAspotter:
     f.close()
 
   def get_page(self, url):
-    logger.debug(f'Chargement de la page {url}')
-    if self.sleep_time > 0:
-      time.sleep(self.sleep_time)
-    page = self.session.get(url)
-    
-    if self.tor_enabled:
-      self.tor_requests+=1
-      if self.tor_max_requests>0 and self.tor_requests>self.tor_max_requests:
+    try:
+      logger.debug(f'Chargement de la page {url}')
+      if self.sleep_time > 0:
+        time.sleep(self.sleep_time)
+      page = self.session.get(url)
+
+      if page.status_code == 429:
+        logger.debug(f'Erreur 429 Too Many Requests reçue, temporisation...')
         self.tor_get_new_id()
+        time.sleep(55)
+        return self.get_page(url)
+      
+      if self.tor_enabled:
+        self.tor_requests+=1
+        if self.tor_max_requests>0 and self.tor_requests>self.tor_max_requests:
+          self.tor_get_new_id()
 
-    return page
+      return page
+    except requests.exceptions.ConnectionError as exc:
+      logger.debug(f'Erreur de connexion, temporisation...')
+      self.tor_get_new_id()
+      time.sleep(55)
+      return self.get_page(url)
 
   def update_user_agent(self, user_agent):
     self.user_agent = user_agent
-- 
GitLab