ஒரே நேர 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 சுரங்கப்பாதைகளுக்குப் பயன்படுத்தப்படும் பாதையும் முக்கியம்; ஒரு குளத்தின் அமைப்பை ஒவ்வொரு புரவலனுக்கும் ஒரே உலகளாவிய சாக்கெட் ஒதுக்கீடாக விவரிக்கக்கூடாது.