Naršyklė turi pakankamai sukonfigūruotų lygiagrečių užklausų. Vis tiek ji sustoja kiekvieną kartą, kai paprašo tarpinio serverio baseino kito adreso. Daugiau tarpinių serverių pridėjimas tos pauzės nekeičia.

Įprastas middleware šablonas kviečia requests.get(pool_url) funkcijos process_request() viduje. Tai sinchroninė tinklo operacija kelyje, kuris turėtų bendradarbiauti su asinchroniniu Scrapy varikliu. Kol kvietimas laukia, jis gali sulaikyti nesusijusį darbą tame pačiame įvykių ciklo gijoje.

Darbe yra dvi užklausos

Viena užklausa gauna galinį tašką iš baseino tarnybos. Kita naudoja tą galinį tašką susisiekti su paskirties vieta. Matuokite ir praneškite apie jas atskirai. Lėtas baseino API gali padaryti kiekvieną pasirinktą tarpinį serverį lėtu dar prieš programai jam prisijungiant.

Naudokite asinchroninę paieškos integraciją, kurią palaiko įdiegta Scrapy versija, arba gaukite ir atnaujinkite ribotą vietinių galinių taškų rinkinį už kiekvienos užklausos kritinio kelio. Jei blokuojantis darbas turi būti perkeltas, suteikite tam vykdytojui savo ribas ir skirtųjų laikų tvarkymą; neribota eilė tik perkelia vėlavimą.

Nesiųskite automatiškai dar vieno paieškos kvietimo kiekvienai užklausai. Trumpalaikė talpykla arba išnuomota partija gali sumažinti priklausomybę nuo baseino tarnybos, jei jos gyvavimo laikas atitinka tikrąją tarnybos galinių taškų politiką.

Apibrėžkite, ką reiškia nepavykusi paieška

Tuščias arba nepavykęs baseino atsakymas neturėtų tyliai pašalinti tarpinio serverio metaduomenų ir leisti tiesioginę užklausą. Pasirinkite aiškų rezultatą: laukti užduoties biudžete, nepavykti arba naudoti patvirtintą talpykloje esantį galinį tašką.

Taip pat palikite laisvą paties baseino API maršrutą. Jei tai vidinė tarnyba, jos privataus serverio vardo siuntimas per būtent tą tarpinį serverį, kuris padeda jį pasirinkti, gali sukurti žiedinę priklausomybę.

Kai paieška veikia neblokuodama nesusijusio darbo, ištirkite įprastą tarpinio serverio operaciją. Tai atskiri taisymai, o jų laikas nusipelno atskirų laukų žurnale.

Susiję straipsniai