Python urllib: Diffodd dirprwyon ar gyfer un opener
Creu opener urllib sy’n cysylltu’n uniongyrchol drwy ProxyHandler({}), heb newid cleientiaid eraill nac amgylchedd y broses.
Rhowch fapiad gwag i ProxyHandler pan ddylai un opener urllib gysylltu’n uniongyrchol:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Nid yw’r geiriadur gwag yn darparu unrhyw lwybrau dirprwy. Os hepgorwch y mapiad, mae’r triniwr yn darganfod dirprwyon o’r amgylchedd a gosodiadau’r platfform yn lle hynny. Mae’r ddau ddull creu hyn yn mynegi polisïau gwahanol.
Mae’r enghraifft yn defnyddio llyfrgell safonol Python ac yn cadw dilysu HTTPS arferol. Mae’r bloc with yn cau’r ymateb, hyd yn oed pan fo eithriad yn achosi gadael y bloc.
Ceisiadau uniongyrchol a thrwy ddirprwy yn yr un rhaglen
Gall dau opener gynnal y ddau bolisi heb newid newidynnau amgylchedd rhwng galwadau:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
Disodlwch y cyfeiriad dolen yn ôl â’ch dirprwy HTTP, neu dewiswch ymgeisydd o’r rhestr dirprwyon HTTP ar gyfer y gymhariaeth drwy ddirprwy. Gall gludo’r cysylltiad i’r targed HTTPS drwy CONNECT pan fo’r gwasanaeth yn caniatáu hynny. Rhaid i brotocol y gwrandäwr a’i gymorth dilysu hunaniaeth gyd-fynd â’r triniwr.
Gadewch yr opener rhagosodedig fel y mae
Galwch direct.open neu proxied.open drwy’r gwrthrych sy’n gyfrifol am y llwybr. Mae install_opener yn newid y rhagosodiad ar draws y broses a ddefnyddir gan alwadau hwylustod urllib; felly gall llyfrgell sy’n ei ddefnyddio effeithio ar god digyswllt. Nid oes ei angen ar gyfer yr opener ynysig uchod.
Gosodiad ar gyfer gweithrediad yw’r arg timeout, nid terfyn amser real sy’n cynnwys pob trosglwyddiad cyfan. Darllenwch y data angenrheidiol yn unig a defnyddiwch derfyn amser ar lefel uwch os oes gan y dasg gyllideb amser gyfan gaeth.
Nid yw’r gwrthrychau opener hyn yn newid cleient llyfrgell arall, proses bresennol na gosodiadau dirprwy porwr.