Blokeeriv puhverserveri basseini päring võib Scrapy seisma jätta
Hoidke sünkroonne puhverserveri basseini API-kutse Scrapy sündmustetsükli teelt väljas ja andke lõpp-punktide avastamisele oma tõrkepoliitika.
Roomajal on piisavalt paralleelseid päringuid seadistatud. Ikka peatub ta alati, kui küsib puhverserveri basseinist teist aadressi. Rohkemate puhverserverite lisamine seda pausi ei puuduta.
Levinud vahetarkvara muster kutsub requests.get(pool_url) funktsiooni process_request() sees. See on sünkroonne võrguoperatsioon teel, mis peaks koostööd tegema Scrapy asünkroonse mootoriga. Kuni kutse ootab, võib see samas sündmustetsükli lõimes hoida kinni mitteseotud tööd.
Töös on kaks päringut
Üks päring hangib basseiniteenusest lõpp-punkti. Teine kasutab seda lõpp-punkti sihtkohaga ühendumiseks. Mõõtke ja raporteerige neid eraldi. Aeglane basseini API võib muuta iga valitud puhverserveri aeglaseks juba enne, kui rakendus on sellega ühendunud.
Kasutage asünkroonset avastusintegratsiooni, mida paigaldatud Scrapy versioon toetab, või hankige ja värskendage piiratud kohalikku lõpp-punktide kogumit väljaspool iga päringu kriitilist teed. Kui blokeeriv töö tuleb mujale suunata, andke sellele täitjale oma piirid ja ajapiirangute käsitlemine; piiramatu järjekord ainult teisaldab viivitust.
Ärge väljastage iga päringu jaoks automaatselt veel ühte avastuskutset. Lühiajaline vahemälu või renditud partii võib vähendada sõltuvust basseiniteenusest, tingimusel et selle eluiga sobib teenuse tegeliku lõpp-punkti poliitikaga.
Määratlege, mida tähendab ebaõnnestunud otsing
Tühi või ebaõnnestunud basseini vastus ei tohiks vaikselt puhverserveri metaandmeid eemaldada ja otsest päringut lubada. Valige selge tulemus: oodata ülesande eelarve piires, ebaõnnestuda või kasutada kinnitatud vahemällu salvestatud lõpp-punkti.
Hoidke ka basseini API enda marsruut vaba. Kui see on siseteenus, võib selle privaatse hostinime saatmine läbi just selle puhverserveri, mille valimisel see aitab, tekitada ringse sõltuvuse.
Kui avastamine töötab ilma mitteseotud tööd blokeerimata, uurige tavalist puhverserveri tehingut. Need on eraldi parandused ja nende ajastus väärib logis eraldi välju.