Blokirajuće traženje proxy pula može zaustaviti Scrapy
Držite sinhroni poziv API-ja proxy pula izvan putanje petlje događaja u Scrapyju i dajte otkrivanju krajnjih točaka vlastitu politiku kvarova.
Puzalac ima dovoljno konfiguriranih istovremenih zahtjeva. Ipak stane kad god od proxy pula zatraži drugu adresu. Dodavanje više proxyja ne dira to zaustavljanje.
Uobičajen obrazac middlewarea poziva requests.get(pool_url) unutar process_request(). To je sinhrona mrežna operacija na putanji koja treba surađivati s asinhronim Scrapyjevim motorom. Dok poziv čeka, može zadržati nepovezani rad na istoj niti petlje događaja.
U poslu su dva zahtjeva
Jedan zahtjev dobija krajnju točku od servisa pula. Drugi koristi tu krajnju točku za kontakt s odredištem. Mjerite ih i izvještavajte odvojeno. Spor API pula može učiniti svaki odabrani proxy sporim prije nego što se aplikacija uopće s njim poveže.
Koristite integraciju asinhronog otkrivanja koju podržava instalirana verzija Scrapyja ili pribavite i osvježavajte ograničen lokalni skup krajnjih točaka izvan kritične putanje svakog zahtjeva. Ako se blokirajući rad mora prebaciti, dajte tom izvršitelju vlastita ograničenja i rukovanje vremenskim ograničenjima; neograničen red samo premješta kašnjenje.
Ne izdavajte automatski još jedan poziv otkrivanja za svaki zahtjev. Kratkotrajni keš ili iznajmljena serija mogu smanjiti zavisnost od servisa pula, pod uslovom da njihov životni vijek odgovara stvarnoj politici krajnjih točaka tog servisa.
Definirajte šta znači neuspješno traženje
Prazan ili neuspješan odgovor pula ne smije tiho ukloniti metapodatke proxyja i dozvoliti direktan zahtjev. Odaberite izričit ishod: čekanje unutar budžeta zadatka, neuspjeh ili korištenje odobrene keširane krajnje točke.
Održavajte i vlastitu rutu API-ja pula čistom. Ako je to interni servis, slanje njegovog privatnog imena hosta kroz upravo onaj proxy koji pomaže odabrati može stvoriti kružnu zavisnost.
Kad otkrivanje radi bez blokiranja nepovezanog rada, pregledajte običnu proxy transakciju. To su odvojene popravke i njihovo vrijeme zaslužuje odvojena polja u dnevniku.