Mengapa Requests membuka lebih banyak koneksi daripada pool_maxsize
Gunakan pool_block untuk kumpulan terbatas, dan tambahkan anggaran tingkat aplikasi bila batas harus mencakup semua lalu lintas melalui proxy.
Dengan bawaan pool_block=False, pool_maxsize membatasi koneksi yang ditahan dalam kumpulan, bukan setiap koneksi yang bersamaan. Requests dapat membuat koneksi tambahan lalu membuangnya setelah itu.
Untuk kumpulan terbatas yang dipakai permintaan HTTPS dari sesi yang sudah ada:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Pemasangan memilih URL tujuan HTTPS. Permintaan HTTP memakai adaptor yang dipasang di bawah http://.
| Masukan | Apa yang dikendalikan |
|---|---|
| pool_connections | Berapa banyak kumpulan yang disimpan pengelola |
| pool_maxsize | Koneksi di dalam satu kumpulan |
| pool_block=True | Menunggu koneksi kumpulan alih-alih membuat koneksi tambahan |
Requests juga menyimpan pengelola proxy per URL proxy. Nilai-nilai ini tidak membentuk satu batas total untuk daftar proxy dan tujuan yang berputar. Gunakan anggaran konkurensi tingkat aplikasi jika persyaratannya adalah semua pekerjaan melewati satu perantara.
Pemblokiran membuat pelepasan respons menjadi penting: habiskan isi atau tutup respons streaming agar pekerjaan yang menunggu dapat berlanjut. Adaptor Requests tidak menyediakan batas waktu terpisah untuk penantian kumpulan ini dalam susunan yang ditunjukkan.