Requests PreparedRequest og umhverfisstillingar sem vantar
Haltu sérsniðnum undirbúnum beiðnum í samræmi við venjulega proxy- og CA-meðhöndlun Requests án þess að ætla að öll lágstigs send-köll hunsi milliþjóna.
Beiðni getur virkað í gegnum session.get() en fallið á staðfestingu skilríkis eftir endurskrifun sem PreparedRequest. Lágstigs send-leiðin framkvæmir ekki sömu umhverfissameiningu og venjulega request-aðferðin.
import requests
with requests.Session() as session:
request = requests.Request("GET", "https://example.com/")
prepared = session.prepare_request(request)
settings = session.merge_environment_settings(
prepared.url, {}, None, None, None
)
response = session.send(
prepared,
timeout=(5, 15),
**settings,
)
response.raise_for_status()
print(response.status_code)
Sameinaðu með endanlegu undirbúnu URL eftir fyrirhugaðar breytingar á því. Ákvarðanir um milliþjón og framhjáhlaup ráðast af áfangastað, svo stillingar fyrir eldra URL geta verið rangar fyrir raunverulegu beiðnina.
Auðvelt er að missa af CA-stillingunni
Með venjulegt umhverfistraust virkt tekur sameining mið af REQUESTS_CA_BUNDLE og varakostinum CURL_CA_BUNDLE þegar staðfestingu hefur ekki verið sérstaklega hnekkt. Beint send-kall með sjálfgefinni verify-stillingu gerir ekki þá CA-leit. Að slökkva á staðfestingu felur misræmið í stað þess að afhenda fyrirhugaða skilríkjageymslu.
Session.prepare_request() beitir líka undirbúningshegðun setunnar. Að búa beiðni beint til með Request.prepare() er sérstakt val; ekki búast við sjálfvirkri beitingu setukaka eða annars setuundirbúnings.
Milliþjónar hafa nákvæmari reglu
Það væri rangt að segja að sérhver PreparedRequest hunsi proxy-umhverfisbreytur. Í Requests 2.34.2 leysir send sjálfgefin proxy-gildi þegar proxies-lykilviðfangið vantar. Að gefa send proxies={} sleppir þeirri tilteknu sjálfgefnu grein.
Tóma orðabókin sem fer til merge_environment_settings hefur annað hlutverk: sameiningin getur fyllt hana með viðeigandi umhverfisleiðum áður en hún fer til send. Að horfa aðeins á tóma orðabók í tveimur dæmum missir af mismunandi aðferðum sem fá hana.
Í sérsniðnum beiðnasmíðakóða skaltu hafa undirbúning, umhverfissameiningu og sendingu saman. Þegar forritið notar trust_env=False af ásetningi virðir sameiningin þá stefnu; hún neyðir ekki umhverfisstillingar inn í biðlara sem slökkti á þeim vísvitandi.