Ang nakaharang na paghahanap sa proxy pool ay maaaring pahintuin ang Scrapy
Panatilihin ang isang synchronous na tawag sa API ng proxy pool sa labas ng landas ng event loop ng Scrapy at bigyan ang pagtuklas ng endpoint ng sarili nitong patakaran sa pagkabigo.
May sapat na naka-configure na magkasabay na kahilingan ang crawler. Humihinto pa rin ito tuwing humihingi ng ibang address sa proxy pool. Hindi naaapektuhan ng pagdaragdag ng mas maraming proxy ang paghinto na iyon.
Isang karaniwang pattern ng middleware ang tumatawag sa requests.get(pool_url) sa loob ng process_request(). Ito ay isang synchronous na operasyon sa network sa isang landas na dapat makipagtulungan sa asynchronous na engine ng Scrapy. Habang naghihintay ang tawag, maaari nitong pigilan ang walang kaugnayang trabaho sa parehong thread ng event loop.
May dalawang kahilingan sa trabaho
Isang kahilingan ang kumukuha ng endpoint mula sa serbisyo ng pool. Ang isa pa ay gumagamit ng endpoint na iyon upang makipag-ugnayan sa destinasyon. Sukatin at iulat ang mga ito nang hiwalay. Ang mabagal na API ng pool ay maaaring magpamukhang mabagal ang bawat napiling proxy bago pa man kumonekta ang aplikasyon dito.
Gumamit ng asynchronous na integrasyon ng pagtuklas na sinusuportahan ng naka-install na bersyon ng Scrapy, o kumuha at mag-refresh ng limitadong lokal na set ng endpoint sa labas ng kritikal na landas ng bawat kahilingan. Kung kailangang ilipat ang trabahong humaharang, bigyan ang tagapagpatupad na iyon ng sarili nitong mga limitasyon at paghawak ng timeout; ang walang limitasyong pila ay inililipat lamang ang pagkaantala.
Huwag awtomatikong maglabas ng isa pang tawag sa pagtuklas para sa bawat kahilingan. Ang panandaliang cache o inupahang batch ay makakabawas ng pag-asa sa serbisyo ng pool, basta't umaangkop ang buhay nito sa aktwal na patakaran ng endpoint ng serbisyo.
Tukuyin ang ibig sabihin ng nabigong paghahanap
Ang walang laman o nabigong tugon ng pool ay hindi dapat tahimik na mag-alis ng metadata ng proxy at payagan ang direktang kahilingan. Pumili ng malinaw na resulta: maghintay sa loob ng badyet ng gawain, mabigo, o gumamit ng aprubadong naka-cache na endpoint.
Panatilihing bukas din ang sariling ruta ng API ng pool. Kung ito ay panloob na serbisyo, ang pagpapadala ng pribadong hostname nito sa mismong proxy na tumutulong piliin ito ay maaaring lumikha ng paikot na pag-asa.
Kapag gumana na ang pagtuklas nang hindi hinaharang ang walang kaugnayang trabaho, suriin ang karaniwang transaksyon ng proxy. Iyon ay magkahiwalay na pagkukumpuni, at ang kanilang tiyempo ay karapat-dapat sa magkahiwalay na field sa log.