Ṣiṣẹda pool oṣiṣẹ ko fun olupe ni awọn oju-iwe ti a gbasilẹ. Tọju ati lo awọn iye ti iṣẹ ti a fi silẹ da pada:

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()

Yi apa yii ro pe atokọ URL ti o ni opin ati awọn iwọn idahun deede wa. Fun awọn ayẹwo URL gbangba ti a gba laaye laisi ijẹrisi proxy, oludije lati akojọ proxy HTTP le rọpo aaye ipari HTTP apẹẹrẹ ti oluṣakoso. Gbogbo abajade pẹlu URL rẹ ki olupe le so ipo ati ara pọ mọ ibeere to tọ. map da awọn abajade pada ni ilana titẹ sii; iyọkuro ninu oṣiṣẹ ni a gbe soke nigbati abajade yẹn ba gba.

ProxyManager ti a ti ṣeto ni o ni akojọpọ asopọ fun awọn ibeere. Pẹlu ipo idahun ti a ti kojọ tẹlẹ aiyipada ti a lo nibi, urllib3 ka ara ati da asopọ pada si pool rẹ. Ẹya ṣiṣan yoo nilo lilo ti o han gbangba ati idasilẹ asopọ.

maxsize maa n ṣakoso awọn asopọ ti o le tun lo ti a tọju, kii ṣe opin lile lori gbogbo soketi ti o ṣii. block=True yipada ihuwasi pool ti o yẹ ki awọn olupe duro fun asopọ ọfẹ dipo ṣiṣi afikun ju opin pool yẹn lọ.

Nọmba oṣiṣẹ ni opin awọn ipe ti o waye papọ ninu apẹẹrẹ yii. Pẹlu ọpọlọpọ awọn ibi-afẹde, ipilẹ pool ati ipa ọna ti a lo fun awọn eefin HTTPS tun ṣe pataki; a ko gbọdọ ṣapejuwe eto pool kan bi ipin soketi agbaye kan fun gbogbo agbalejo.

Àwọn àpilẹ̀kọ tó jọra