Qualys sync: retry 3x avec backoff sur erreurs transitoires proxy/reseau

This commit is contained in:
Pierre & Lumière 2026-04-15 12:44:49 +02:00
parent 9e03fd84c0
commit 935c8003b4

View File

@ -625,14 +625,23 @@ def _refresh_all_agents_impl(db, mode="diff"):
"preferences": {"limitResults": 100}, "preferences": {"limitResults": 100},
"filters": {"Criteria": criteria} "filters": {"Criteria": criteria}
}} }}
try: # Retry sur erreurs transitoires proxy/reseau (max 3 essais)
r = requests.post( r = None
f"{qualys_url}/qps/rest/2.0/search/am/hostasset", last_err = None
json=payload, auth=(qualys_user, qualys_pass), for attempt in range(3):
verify=False, timeout=600, proxies=proxies, try:
headers={"X-Requested-With": "PatchCenter", "Content-Type": "application/json"}) r = requests.post(
except Exception as e: f"{qualys_url}/qps/rest/2.0/search/am/hostasset",
return {"ok": False, "msg": f"page {stats['pages']}: {e}", **stats} json=payload, auth=(qualys_user, qualys_pass),
verify=False, timeout=600, proxies=proxies,
headers={"X-Requested-With": "PatchCenter", "Content-Type": "application/json"})
break
except Exception as e:
last_err = e
import time as _t
_t.sleep(2 * (attempt + 1)) # backoff 2s, 4s
if r is None:
return {"ok": False, "msg": f"page {stats['pages']} apres 3 essais: {last_err}", **stats}
if r.status_code != 200 or "SUCCESS" not in r.text: if r.status_code != 200 or "SUCCESS" not in r.text:
return {"ok": False, "msg": f"HTTP {r.status_code} page {stats['pages']}", **stats} return {"ok": False, "msg": f"HTTP {r.status_code} page {stats['pages']}", **stats}