সমান্তৰাল urllib3 প্ৰক্সী অনুৰোধৰ পৰা প্ৰতিটো ফলাফল সংগ্ৰহ কৰক
কৰ্মী থ্ৰেডৰ মাজত এটা সংৰূপিত ProxyManager ভাগ কৰক, এক্সিকিউটাৰৰ ফলাফল ইটাৰেটৰ ব্যৱহাৰ কৰক আৰু পুল ধৰি ৰখাক সংযোগ সীমাৰ পৰা পৃথক কৰক।
কৰ্মী পুল সৃষ্টি কৰিলে মাত্ৰা কৰোঁতাক ডাউনলোড কৰা পৃষ্ঠাবোৰ নিদিয়ে। দাখিল কৰা কামে ঘূৰাই দিয়া মানবোৰ ৰাখক আৰু ব্যৱহাৰ কৰক:
from concurrent.futures import ThreadPoolExecutor
import urllib3
manager = urllib3.ProxyManager(
'http://proxy.example:8080',
maxsize=4,
block=True,
)
def fetch(url):
response = manager.request(
'GET', url, timeout=urllib3.Timeout(connect=5, read=15),
)
return url, response.status, response.data
try:
with ThreadPoolExecutor(max_workers=4) as workers:
results = list(workers.map(fetch, urls))
finally:
manager.clear()এই টুকুৰাই URLৰ এটা সীমিত তালিকা আৰু সাধাৰণ সঁহাৰিৰ আকাৰ ধৰি লয়। প্ৰক্সী প্ৰমাণীকৰণ নোহোৱাকৈ অনুমোদিত ৰাজহুৱা-URL পৰীক্ষাৰ বাবে, HTTP প্ৰক্সী তালিকাৰ পৰা এটা প্ৰাৰ্থীয়ে মেনেজাৰৰ উদাহৰণ HTTP এণ্ডপইণ্ট সলনি কৰিব পাৰে। প্ৰতিটো ফলাফলে ইয়াৰ URL অন্তৰ্ভুক্ত কৰে যাতে মাত্ৰা কৰোঁতাই স্থিতি আৰু বডি সঠিক অনুৰোধৰ সৈতে সংযুক্ত কৰিব পাৰে। map এ ইনপুট ক্ৰমত ফলাফল ঘূৰাই দিয়ে; কৰ্মী এটাত থকা ব্যতিক্ৰম সেই ফলাফল আনোতে উত্থাপন হয়।
সংৰূপিত ProxyManager এ অনুৰোধবোৰৰ বাবে সংযোগ পুলিংৰ মালিক। ইয়াত ব্যৱহৃত ডিফল্ট পূৰ্বলৈড কৰা সঁহাৰি ম'ডৰ সৈতে, urllib3 এ বডি পঢ়ে আৰু সংযোগটো ইয়াৰ পুললৈ ঘূৰাই দিয়ে। এটা ষ্ট্ৰিমিং সংস্কৰণে স্পষ্ট ব্যৱহাৰ আৰু সংযোগ মুক্তিৰ প্ৰয়োজন হ'ব।
maxsize এ সাধাৰণতে ৰখা পুনঃব্যৱহাৰযোগ্য সংযোগ নিয়ন্ত্ৰণ কৰে, প্ৰতিটো খোলা ছকেটত কঠোৰ সীমা নহয়। block=True এ প্ৰাসংগিক পুল আচৰণ সলনি কৰে যাতে মাত্ৰা কৰোঁতাই সেই পুলৰ সীমাৰ বাহিৰে অতিৰিক্ত খোলাৰ পৰিৱৰ্তে এটা মুক্ত সংযোগৰ বাবে অপেক্ষা কৰে।
এই উদাহৰণত কৰ্মী সংখ্যাই সমসাময়িক কল সীমিত কৰে। বহুতো গন্তব্যৰ সৈতে, পুলৰ বিন্যাস আৰু HTTPS সুৰংগৰ বাবে ব্যৱহৃত পথো গুৰুত্বপূৰ্ণ; এটা পুল-প্ৰতি ছেটিং প্ৰতিটো হোষ্টৰ বাবে এক বিশ্বব্যাপী ছকেট কোটা হিচাপে বৰ্ণনা কৰা উচিত নহয়।