Nagbabago ang address ng proxy sa log. Hindi kailanman lumilitaw ang destinasyon sa access log ng proxy. Tingnan kung hinahayaan ng iyong middleware na makarating ang kahilingan sa downloader.

Sa middleware ng downloader ng Scrapy, ang pagbabalik ng Request ay nangangahulugang muling pag-iiskedyul ng kahilingang iyon. Hindi ito nangangahulugang «ipagpatuloy ang pagpapadala ng bagay na ito kasama ng metadata na binago ko lang».

Para sa isang tagapili na pumipili lamang ng ruta, ang mahalagang anyo ay:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Ipinapakita ng bahaging ito ang kasalukuyang anyo ng hook; gamitin ang interface ng middleware na sinusuportahan ng naka-install na bersyon ng Scrapy. Dapat magbalik ang tagapili ng wastong endpoint at tahasang hawakan ang hindi magagamit na pool. Ang pampublikong crawl na pumapayag sa mga pampublikong tagapamagitan ay maaaring kumuha ng mga kandidatong HTTP mula sa listahan ng proxy na HTTP para sa halagang iyon na ibinabalik.

Ang pagbabalik ng None ay nagpapahintulot sa natitirang middleware ng kahilingan at sa downloader na magpatuloy. Ang pagbabalik ng ibang Request ay kapaki-pakinabang kapag sadyang pinapalitan o sinusubukan muli ang trabaho, ngunit nangangailangan ito ng dahilan at kundisyon sa paglabas.

Ang isang rotator na nagbabalik ng parehong kahilingan sa bawat pagkakataon ay maaaring paulit-ulit na patakbuhin ang sarili nitong code sa pagpili nang hindi kailanman gumagawa ng koneksyon sa destinasyon. Ang pagtaas ng mga timeout o pagbubukas ng mas maraming port ng proxy ay hindi makapag-aayos ng loop ng daloy ng kontrol na iyon.

Suriin ang pagpasok sa middleware, pag-uugali sa pagbabalik at ang unang aktwal na pagtatangkang network bilang magkakahiwalay na pangyayari. Ang linyang log na nagsasabing «napili ang proxy» ay nagpapatunay lamang na tumakbo ang tagapili. Hindi nito pinapatunayan na may ipinadalang kahilingan gamit ang napiling endpoint.

Kaugnay na mga artikulo