Zaustavite petlju rotacije proxyja da ne radi zauvijek
Dajte Python proxy skupu konačan proračun pokušaja i razlikujte pogreške veze od odgovora odredišta.
Proxy skup može jednostavan prekid pretvoriti u zauzetu petlju. Odaberite adresu, ne uspijte, odaberite drugu, ne uspijte opet. Ako je svaka krajnja točka nedostižna jer je vaša vlastita mreža pala, promjena adresa nikada ne otklanja uzrok.
Dajte operaciji proračun prije nego odaberete prvi proxy iz skupa ili s popisa besplatnih proxyja: konačan broj pokušaja, ograničena čekanja veze i čitanja te rok za cijeli zadatak. Requests timeout upravlja svojim dokumentiranim ponašanjem veze ili čitanja; sam po sebi ne ograničava petlju koja neprestano šalje nove zahtjeve.
Odlučite što zaslužuje još jedan pokušaj
- Odbijena proxy veza može opravdati isprobavanje druge krajnje točke.
- Odgovor odredišta traži vlastito tumačenje. Primanje HTTP pogreške dokazuje da je neki put zahtjeva dovršen.
- Neuspjela proxy autentifikacija zahtijeva provjeru krajnje točke i računa, a ne udaranje istim vjerodajnicama kroz rastući popis.
Čuvajte izvornu iznimku ili status uz zapis pokušaja. Završna poruka koja sadrži samo „svi proxyji nisu uspjeli” skriva jesu li pogreške uopće imale isti uzrok.
Provjera zdravlja svakog proxyja prije svakog stvarnog zahtjeva dodaje još jedan zahtjev i još uvijek ne jamči da će sljedeći uspjeti. Ponovno upotrijebite nedavne informacije o zdravlju gdje odgovaraju zadatku, a zatim pustite stvarnu operaciju da izvijesti o vlastitom rezultatu.
Ponovni pokušaj može ponoviti posao
Za dohvat samo za čitanje, prelazak na drugi proxy obično je jednostavniji od ponovnog slanja prijave. Ako veza padne nakon slanja kupnje ili obrasca, odredište ga je možda već obradilo. Slijedite mehanizam idempotencije usluge i HTTP pravila ponovnog pokušaja prije ponavljanja posla.
Kada se proračun potroši, vratite korisnu pogrešku. Posao koji se zaustavlja s dokazima lakše je popraviti od onoga koji tiho rotira dok netko ne primijeti.