Bloķējoša starpniekserveru baseina vaicājums var apstādināt Scrapy
Turiet sinhrono starpniekserveru baseina API izsaukumu ārpus Scrapy notikumu cilpas ceļa un dodiet galapunktu atklāšanai savu kļūmju politiku.
Ģenerētājam ir pietiekami daudz konfigurētu vienlaicīgu pieprasījumu. Tomēr tas apstājas ikreiz, kad pieprasa starpniekserveru baseinam citu adresi. Vairāk starpniekserveru pievienošana šo apstāšanos neietekmē.
Bieži sastopams middleware modelis izsauc requests.get(pool_url) funkcijas process_request() iekšienē. Tā ir sinhrona tīkla darbība ceļā, kuram jāsadarbojas ar Scrapy asinhrono dzinēju. Kamēr izsaukums gaida, tas var aizturēt nesaistītu darbu tajā pašā notikumu cilpas pavedienā.
Darbā ir divi pieprasījumi
Viens pieprasījums iegūst galapunktu no baseina pakalpojuma. Otrs izmanto šo galapunktu, lai sazinātos ar galamērķi. Mēriet un ziņojiet par tiem atsevišķi. Lēns baseina API var likt katram izvēlētajam starpniekserverim izskatīties lēnam jau pirms lietotne tam izveidojusi savienojumu.
Izmantojiet asinhronu atklāšanas integrāciju, ko atbalsta instalētā Scrapy versija, vai iegūstiet un atsvaidziniet ierobežotu lokālu galapunktu kopu ārpus katra pieprasījuma kritiskā ceļa. Ja bloķējošais darbs ir jāpārvieto, dodiet šim izpildītājam savus limitus un taimauta apstrādi; neierobežota rinda tikai pārvieto aizkavēšanos.
Neizdodiet automātiski vēl vienu atklāšanas izsaukumu katram pieprasījumam. Īslaicīgs kešs vai nomāta partija var samazināt atkarību no baseina pakalpojuma, ja tās darbības laiks atbilst pakalpojuma faktiskajai galapunktu politikai.
Definējiet, ko nozīmē neizdevusies meklēšana
Tukss vai neizdevies baseina atbildes ziņojums nedrīkst klusi noņemt starpniekservera metadatus un atļaut tiešu pieprasījumu. Izvēlieties skaidru iznākumu: gaidīt uzdevuma budžetā, ciest neveiksmi vai izmantot apstiprinātu kešoto galapunktu.
Saglabājiet brīvu arī paša baseina API maršrutu. Ja tas ir iekšējs pakalpojums, tā privātā resursdatora nosaukuma sūtīšana caur tieši to starpniekserveru, kas palīdz to izvēlēties, var radīt cirkulāru atkarību.
Kad atklāšana darbojas, nebloķējot nesaistītu darbu, pārbaudiet parasto starpniekservera darījumu. Tie ir atsevišķi labojumi, un to laiks ir pelnījis atsevišķus laukus žurnālā.