Python Requests Session starpniekserveri un vides prioritāte
Padariet Python Requests maršrutēšanu paredzamu, mijiedarbojoties session.proxies, vides mainīgajiem, pieprasījuma iestatījumiem un trust_env.
Ja session.proxies norāda vienu galapunktu, bet skripts izmanto čaulas starpniekserveri, tās pašas vārdnīcas atkārtota piešķiršana konfliktu neatrisina. Requests var apvienot vides starpniekservera iestatījumus ar prioritāti pār Session noklusējumiem. Izlemiet, vai Session jāturpina atklāt iestatījumus no vides.
Saglabājiet vides atklāšanu, maršrutus dodiet pieprasījumā
Nododiet skaidri norādītas vērtības atsevišķajam izsaukumam, kā Requests iesaka šī Session un vides konflikta novēršanai:
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
with requests.Session() as session:
response = session.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
Vietējo klausītāju aizstājiet ar savu. Salīdzinot publiskus HTTP galapunktus, izvēlieties kandidātus no HTTP starpniekserveru saraksta un nemainiet Session politiku. Tas kontrolē dotā kartējuma ierakstus; apzināti izvēlieties arī citām lietotnes shēmām vai resursdatoriem. Pakalpojums, IDE, konteiners vai CI izpildītājs var mantot citādu vidi nekā terminālis.
Ļaujiet Session pārvaldīt savus iestatījumus
Ja lietotnei nevajadzētu atklāt starpniekserverus no vides, iestatiet politiku pirms pirmā pieprasījuma:
with requests.Session() as session:
session.trust_env = False
session.proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = session.get(
"https://example.com/",
timeout=(5, 15),
)
response.raise_for_status()
trust_env=False ietekmē arī ar vidi saistīto sertifikātu konfigurāciju un automātisko netrc autentifikāciju. Pirms izvēles ievērojiet šīs atkarības. Apstiprinātam privātam CA sertifikātu komplektam varat norādīt skaidru ceļu:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Izmantojiet patiešām apstiprināto komplektu un atstājiet pārbaudi ieslēgtu. Katrai maršrutēšanas politikai turiet atsevišķu Session, nevis mainiet vienu, kad to izmanto citi darbi.
Ja neviens variants neizskaidro lietotnes ceļu, salīdziniet izolētu Session ar lietotni tajā pašā izpildes vidē un ar nekaitīgu mērķi. Pierakstiet esošos starpniekservera mainīgos, trust_env vērtību un vai izsaukums nodod proxies; URL ar akreditācijas datiem neiekļaujiet koplietojamos žurnālos. Izolēta veiksme nākamo pārbaudi virza uz Session veidošanu, adapteriem, sagatavotu pieprasījumu plūsmām vai saviem transportiem. Vides pārbaude ar curl nenosaka paša Requests apvienošanas uzvedību.