Oprește o buclă de rotație a proxy-urilor care rulează la nesfârșit
Dă unui pool de proxy-uri Python un buget finit de încercări și distinge eșecurile de conexiune de răspunsurile destinației.
Un pool de proxy-uri poate transforma o pană simplă într-o buclă aglomerată. Alege o adresă, eșuează, alege alta, eșuează din nou. Dacă fiecare endpoint este inaccesibil pentru că propria rețea este căzută, schimbarea adreselor nu remediază niciodată cauza.
Dă operațiunii un buget înainte de a alege primul proxy din pool sau din lista de proxy-uri gratuite: un număr finit de încercări, așteptări limitate pentru conexiune și citire și un termen limită pentru întreaga sarcină. Un timeout Requests controlează comportamentul documentat de conexiune sau citire; nu limitează de unul singur o buclă care continuă să emită cereri noi.
Decide ce merită o altă încercare
- O conexiune de proxy refuzată poate justifica încercarea altui endpoint.
- Răspunsul destinației are nevoie de propria interpretare. Primirea unei erori HTTP dovedește că o cale de cerere s-a încheiat.
- Un eșec de autentificare la proxy cere verificarea endpointului și a contului în loc să lovească aceleași credențiale printr-o listă tot mai mare.
Păstrează excepția sau statusul original împreună cu înregistrarea încercării. Un mesaj final care conține doar „toate proxy-urile au eșuat” ascunde dacă eșecurile au avut măcar aceeași cauză.
Verificarea sănătății fiecărui proxy înainte de fiecare cerere reală adaugă încă o cerere și tot nu poate garanta că următoarea va reuși. Refolosește informațiile recente despre sănătate acolo unde se potrivesc sarcinii, apoi lasă operațiunea reală să raporteze propriul rezultat.
O reîncercare poate repeta munca
Pentru o preluare doar în citire, trecerea la alt proxy este de obicei mai simplă decât reluarea unei trimiteri. Dacă o conexiune cade după trimiterea unei achiziții sau a unui formular, destinația s-ar putea să fi procesat-o deja. Urmează mecanismul de idempotență al serviciului și regulile HTTP de reîncercare înainte de a relua munca.
Când bugetul este epuizat, returnează un eșec util. O sarcină care se oprește cu dovezi este mai ușor de reparat decât una care continuă în tăcere să se rotească până când cineva observă.