Python Requestsin Session-välityspalvelimet ja ympäristön etusija
Tee Python Requestsin reitityksestä ennakoitavaa, kun session.proxies, ympäristömuuttujat, pyyntökohtaiset asetukset ja trust_env vaikuttavat yhdessä.
Jos session.proxies osoittaa yhteen päätepisteeseen mutta skripti käyttää komentotulkin välityspalvelinta, saman sanakirjan uudelleenmääritys ei ratkaise ristiriitaa. Requests voi yhdistää ympäristön välityspalvelinasetukset Session-oletusten edelle. Päätä, pitäisikö Sessionin edelleen hakea asetuksia ympäristöstä.
Säilytä ympäristön tunnistus, anna reitit pyynnössä
Anna täsmälliset arvot yksittäiseen kutsuun, kuten Requests suosittelee tämän Sessionin ja ympäristön ristiriidan välttämiseen:
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()
Korvaa paikallinen kuuntelija omallasi. Jos vertaat julkisia HTTP-päätepisteitä, valitse ehdokkaat HTTP-välityspalvelinluettelosta ja pidä Session-käytäntö samana. Tämä ohjaa annetun kuvauksen merkintöjä; valitse tietoisesti myös muiden sovelluksen käyttämien skeemojen tai isäntien asetukset. Palvelu, IDE, kontti tai CI-suorittaja voi periä eri ympäristön kuin pääte.
Anna Sessionin hallita omia asetuksiaan
Jos sovelluksen ei pidä löytää välityspalvelimia ympäristöstä, aseta käytäntö ennen ensimmäistä pyyntöä:
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 vaikuttaa myös ympäristöön liittyvään varmenneasetukseen ja automaattiseen netrc-todennukseen. Huomioi nämä riippuvuudet ennen valintaa. Hyväksytylle yksityiselle CA-varmennepaketille voi antaa täsmällisen polun:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Käytä todella hyväksyttyä pakettia ja pidä varmennus käytössä. Pidä jokaiselle reitityskäytännölle erillinen Session sen sijaan, että muutat yhtä muiden tehtävien käyttäessä sitä.
Jos kumpikaan vaihtoehto ei selitä sovelluksen reittiä, vertaa eristettyä Sessionia sovellukseen samassa suoritusympäristössä ja samaan harmittomaan kohteeseen. Kirjaa olemassa olevat välityspalvelinmuuttujat, trust_env-arvo ja se, antaako kutsu proxies-parametrin; jätä tunnistetietoja sisältävät URL-osoitteet pois jaetuista lokeista. Onnistuminen eristyksessä ohjaa seuraavan tarkastuksen Sessionin muodostamiseen, sovittimiin, valmisteltujen pyyntöjen kulkuihin tai omiin kuljetuksiin. Ympäristötesti curlilla ei ratkaise Requestsin omaa yhdistämiskäyttäytymistä.