|
1 | 1 | import requests |
| 2 | +from requests.adapters import HTTPAdapter |
| 3 | +from urllib3.util.retry import Retry |
2 | 4 | import time |
3 | 5 | import os |
4 | 6 | import compare_json as comparator |
@@ -38,11 +40,25 @@ def get_notes_content(): |
38 | 40 | 'Sec-Fetch-User': '?1', |
39 | 41 | 'Cache-Control': 'max-age=0' |
40 | 42 | } |
41 | | - response = requests.get(URL, headers=headers, timeout=30, verify=True) |
| 43 | + # Session avec retry et backoff pour la robustesse réseau |
| 44 | + session = requests.Session() |
| 45 | + retries = Retry( |
| 46 | + total=3, |
| 47 | + backoff_factor=1.0, |
| 48 | + status_forcelist=[429, 500, 502, 503, 504], |
| 49 | + allowed_methods=["GET"], |
| 50 | + raise_on_redirect=False, |
| 51 | + raise_on_status=False, |
| 52 | + ) |
| 53 | + session.mount("https://", HTTPAdapter(max_retries=retries)) |
| 54 | + session.mount("http://", HTTPAdapter(max_retries=retries)) |
| 55 | + |
| 56 | + # Désactiver les redirections pour réduire les risques liés aux redirects |
| 57 | + response = session.get(URL, headers=headers, timeout=(5, 30), verify=True, allow_redirects=False) |
42 | 58 |
|
43 | 59 | if response.status_code != 200: |
44 | | - error_text = response.text[:500] # Limiter la longueur du message d'erreur |
45 | | - raise Exception(f"Erreur lors de la récupération des notes: {response.status_code} - {error_text}") |
| 60 | + # N'imprime pas le corps pour éviter d'exposer des données |
| 61 | + raise Exception(f"Erreur lors de la récupération des notes: {response.status_code}") |
46 | 62 | response.raise_for_status() |
47 | 63 | return response.text |
48 | 64 |
|
|
0 commit comments