Epuka mabadiliko ya urllib opener ya kimataifa katika vichunguzi vya proxy
Weka uchunguzi wa proxy wa urllib ndani ya opener yake yenyewe badala ya kubadilisha uelekezaji na muda wa kawaida wa mchakato mzima.
from urllib.request import ProxyHandler, build_opener
def make_proxy_opener(proxy_uri):
return build_opener(ProxyHandler({
"http": proxy_uri,
"https": proxy_uri,
}))
opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.Ita mbinu open ya opener hii yenyewe wakati njia ni ya uchunguzi. Kituo cha HTTP cha mfano kinaweza kutoka kwa huduma yako au kutoka orodha ya proxy ya HTTP kwa uchunguzi wa umma. Kipande kinaonyesha umiliki; hakifafanui sera kamili ya uthibitishaji au afya. Weka handler yoyote mahususi ya akaunti ikiwa imeunganishwa na mteja aliyekusudiwa.
urllib.request.install_opener() hubadilisha chaguo-msingi la mchakato mzima ambalo huitwa urlopen() za ngazi ya moduli baadaye hutumia. Kwa hivyo kichunguzi kinachozunguka proxy kinaweza kuacha maombi yasiyohusiana yakitumia kituo chake cha mwisho. Kusakinisha kwa muda na kurejesha wakati wa kusafisha bado huruhusu maombi ya wakati mmoja kufanya kazi wakati wa mabadiliko ya pamoja.
socket.setdefaulttimeout() vivyo hivyo hubadilisha chaguo-msingi kwa socket zinazoundwa baadaye. Tumia muda wa ngazi ya operesheni wakati ni uchunguzi pekee unapaswa kuupokea.
Funga majibu ya uchunguzi na uweke matokeo mahususi: jibu la hitilafu ya HTTP si msikilizaji wa proxy aliyekufa kiotomatiki. Ikiwa uchunguzi wa urllib wa synchronous unatumika katika huduma ya async, hamishia kazi inayozuia kwa worker anayefaa; uamuzi huo wa utekelezaji haufanyi mabadiliko ya opener ya kimataifa kuwa pekee.
Uchunguzi unapaswa kurudisha uchunguzi wake bila kuacha sera nyingine ya mtandao nyuma. Kitu chake cha mteja na operesheni yenye mipaka hufanya mpaka huo uwe wazi.