සමගාමී 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 උමං සඳහා භාවිත කරන මාර්ගයද වැදගත් වේ; එක් තටාකයක සැකසුම සෑම සත්කාරකයක් සඳහාම එකම ගෝලීය සොකට් කෝටාවක් ලෙස විස්තර නොකළ යුතුය.