কেন Requests pool_maxsize-এর চেয়ে বেশি সংযোগ খোলে
সীমিত পুলের জন্য pool_block ব্যবহার করুন, আর যখন সীমাটি প্রক্সির মাধ্যমে সব ট্র্যাফিক ঢাকতে হবে তখন অ্যাপ্লিকেশন-স্তরের বাজেট যোগ করুন।
ডিফল্ট pool_block=False থাকলে pool_maxsize পুলে ধরে রাখা সংযোগ সীমিত করে, একসঙ্গে চলা প্রতিটি সংযোগ নয়। Requests অতিরিক্ত সংযোগ তৈরি করে পরে সেগুলো ফেলে দিতে পারে।
একটি চলমান সেশনের HTTPS অনুরোধে ব্যবহৃত সীমিত পুলের জন্য:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)মাউন্টটি HTTPS গন্তব্য URL নির্বাচন করে। HTTP অনুরোধ http://-এর অধীনে মাউন্ট করা অ্যাডাপ্টার ব্যবহার করে।
| ইনপুট | এটি কী নিয়ন্ত্রণ করে |
|---|---|
| pool_connections | ম্যানেজার কতগুলো পুল ক্যাশ করে |
| pool_maxsize | একটি পুলের ভিতরের সংযোগ |
| pool_block=True | অতিরিক্ত তৈরি না করে পুল সংযোগের জন্য অপেক্ষা |
Requests প্রক্সি URL অনুযায়ী প্রক্সি ম্যানেজারও ক্যাশ করে। এই মানগুলো ঘুরতে থাকা প্রক্সি ও গন্তব্যের তালিকা জুড়ে একটি মোট সীমা তৈরি করে না। যদি প্রয়োজন হয় সব কাজ একটি মাধ্যমের ভিতর দিয়ে যাওয়া, তবে অ্যাপ্লিকেশন-স্তরের সমবর্তিতা বাজেট ব্যবহার করুন।
ব্লকিং প্রতিক্রিয়া মুক্ত করা অপরিহার্য করে তোলে: বডি গ্রহণ করুন বা স্ট্রিমিং প্রতিক্রিয়া বন্ধ করুন যাতে অপেক্ষারত কাজ এগোতে পারে। দেখানো বিন্যাসে Requests-এর অ্যাডাপ্টার এই পুল-অপেক্ষার জন্য আলাদা টাইমআউট দেয় না।