Pencarian proxy pool yang memblokir dapat membuat Scrapy macet
Jauhkan panggilan API proxy pool yang sinkron dari jalur loop peristiwa Scrapy dan beri penemuan endpoint kebijakan kegagalannya sendiri.
Crawler sudah memiliki cukup banyak permintaan bersamaan yang dikonfigurasi. Namun ia tetap berhenti setiap kali meminta alamat lain ke proxy pool. Menambah lebih banyak proxy tidak menyentuh jeda itu.
Pola middleware yang umum memanggil requests.get(pool_url) di dalam process_request(). Itu adalah operasi jaringan sinkron pada jalur yang seharusnya bekerja sama dengan mesin asinkron Scrapy. Selama panggilan menunggu, ia dapat menahan pekerjaan yang tidak terkait pada thread loop peristiwa yang sama.
Ada dua permintaan dalam pekerjaan itu
Satu permintaan memperoleh endpoint dari layanan pool. Yang lain memakai endpoint itu untuk menghubungi tujuan. Ukur dan laporkan keduanya secara terpisah. API pool yang lambat dapat membuat setiap proxy yang dipilih tampak lambat bahkan sebelum aplikasi terhubung ke sana.
Gunakan integrasi penemuan asinkron yang didukung versi Scrapy yang terpasang, atau peroleh dan segarkan kumpulan endpoint lokal yang terbatas di luar jalur kritis tiap permintaan. Jika pekerjaan yang memblokir harus dialihkan, beri eksekutor itu batas dan penanganan timeout sendiri; antrean tanpa batas hanya memindahkan penundaan.
Jangan mengeluarkan panggilan penemuan lain secara otomatis untuk setiap permintaan. Cache berumur pendek atau kumpulan yang disewa dapat mengurangi ketergantungan pada layanan pool, asalkan masa hidupnya sesuai dengan kebijakan endpoint sebenarnya dari layanan itu.
Tentukan arti pencarian yang gagal
Respons pool yang kosong atau gagal tidak boleh diam-diam menghapus metadata proxy dan mengizinkan permintaan langsung. Pilih hasil yang eksplisit: menunggu dalam anggaran tugas, gagal, atau memakai endpoint cache yang disetujui.
Jaga juga rute API pool itu sendiri tetap bersih. Jika itu layanan internal, mengirim nama host privatnya melalui proxy yang justru membantu memilihnya dapat menciptakan ketergantungan melingkar.
Setelah penemuan bekerja tanpa memblokir pekerjaan yang tidak terkait, periksa transaksi proxy biasa. Itu perbaikan yang terpisah, dan waktunya layak mendapat bidang terpisah di log.