Kukusanya kila tokeo kutoka maombi ya wakala ya urllib3 ya wakati mmoja
Shiriki ProxyManager iliyosanidiwa kati ya nyuzi za kazi, tumia kipitishio cha matokeo cha mtekelezaji na utofautishe uhifadhi wa dimbwi na kikomo cha muunganisho.
Kuunda dimbwi la wafanyakazi hakumpi mwita kurasa zilizopakuliwa. Hifadhi na utumie thamani zinazorudishwa na kazi iliyowasilishwa:
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()Kipande hiki kinadhani orodha yenye mipaka ya URL na ukubwa wa kawaida wa majibu. Kwa ukaguzi wa URL za umma unaoruhusiwa bila uthibitishaji wa wakala, mwombaji kutoka orodha ya wakala wa HTTP anaweza kuchukua nafasi ya kituo cha mwisho cha HTTP cha mfano cha msimamizi. Kila tokeo linajumuisha URL yake ili mwita aweze kuhusisha hali na mwili na ombi sahihi. map hurudisha matokeo kwa mpangilio wa ingizo; ubaguzi katika mfanyakazi huinuliwa wakati tokeo hilo linapopatikana.
ProxyManager iliyosanidiwa inamiliki mkusanyiko wa miunganisho kwa maombi. Kwa hali chaguomsingi ya jibu lililopakiwa mapema inayotumika hapa, urllib3 husoma mwili na kurudisha muunganisho kwenye dimbwi lake. Toleo la utiririshaji litahitaji matumizi ya wazi na kuachiliwa kwa muunganisho.
maxsize kwa kawaida hudhibiti miunganisho inayoweza kutumika tena iliyohifadhiwa, si kikomo kigumu kwa kila soketi iliyofunguliwa. block=True hubadilisha tabia husika ya dimbwi ili waitaji wasubiri muunganisho huru badala ya kufungua zaidi ya kikomo cha dimbwi hilo.
Idadi ya wafanyakazi huweka kikomo cha simu za wakati mmoja katika mfano huu. Kukiwa na maeneo mengi ya mwisho, mpangilio wa dimbwi na njia inayotumika kwa vichuguu vya HTTPS pia ni muhimu; mpangilio wa dimbwi moja haupaswi kuelezewa kama kikomo cha jumla cha soketi kwa kila mwenyeji.