Zaustavite petlju rotacije proxyja da ne radi zauvijek
Dajte Python proxy poolu konačan budžet pokušaja i razlikujte kvarove veze od odgovora odredišta.
Proxy pool može pretvoriti jednostavan prekid u zauzetu petlju. Odaberite adresu, ne uspije, odaberite drugu, opet ne uspije. Ako je svaka krajnja točka nedostupna jer je vaša vlastita mreža pala, promjena adresa nikada ne otklanja uzrok.
Dajte operaciji budžet prije nego odaberete prvi proxy iz svog poola ili liste besplatnih proxyja: konačan broj pokušaja, ograničena čekanja na vezu i čitanje te krajnji rok za cijeli zadatak. Requests timeout kontroliše svoje dokumentovano ponašanje veze ili čitanja; on samo po sebi ne ograničava petlju koja nastavlja slati nove zahtjeve.
Odlučite šta zaslužuje još jedan pokušaj
- Odbijena veza preko proxyja može opravdati pokušaj druge krajnje točke.
- Odgovor odredišta traži vlastito tumačenje. Primanje HTTP greške dokazuje da je neki put zahtjeva završen.
- Neuspjeh autentifikacije proxyja zahtijeva provjeru krajnje točke i računa umjesto udaranja istim akreditivima kroz rastuću listu.
Čuvajte originalni izuzetak ili status uz zapis pokušaja. Završna poruka koja sadrži samo „svi proxyji nisu uspjeli“ skriva da li su kvarovi uopšte imali isti uzrok.
Provjera zdravlja svakog proxyja prije svakog stvarnog zahtjeva dodaje još jedan zahtjev i još uvijek ne može garantovati da će sljedeći uspjeti. Ponovo koristite nedavne informacije o zdravlju gdje odgovaraju zadatku, a zatim pustite stvarnu operaciju da izvijesti svoj rezultat.
Ponovni pokušaj može ponoviti posao
Za dohvatanje samo za čitanje, prelazak na drugi proxy obično je jednostavniji od ponovnog puštanja predaje. Ako veza padne nakon slanja kupovine ili predaje obrasca, odredište ga je možda već obradilo. Slijedite mehanizam idempotentnosti usluge i HTTP pravila ponovnog pokušaja prije ponovnog puštanja posla.
Kada se budžet potroši, vratite korisnu grešku. Posao koji se zaustavi s dokazima lakše je popraviti od onog koji tiho nastavlja rotirati dok neko ne primijeti.