Hvis session.proxies peker på ett endepunkt, men skriptet bruker skallets proxy, løser det ikke konflikten å tilordne den samme ordboken på nytt. Requests kan slå sammen miljøets proxyinnstillinger med forrang foran Sessions standardverdier. Velg om Session fortsatt skal oppdage innstillinger fra miljøet.

Behold miljøoppdagelse, oppgi ruter i forespørselen

Send uttrykkelige verdier til det enkelte kallet, slik Requests anbefaler for å unngå konflikten mellom Session og miljø:

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()

Bytt ut den lokale lytteren med din egen. Sammenligner du offentlige HTTP-endepunkter, velg kandidater fra listen over HTTP-proxyer og hold Session-policyen fast. Dette styrer de oppgitte oppføringsverdiene i tilordningen; velg bevisst også for andre skjemaer eller verter programmet bruker. En tjeneste, IDE, container eller CI-kjører kan arve et annet miljø enn terminalen.

La Session styre sine egne innstillinger

Hvis programmet ikke skal oppdage proxyer fra miljøet, sett policyen før den første forespørselen:

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 påvirker også miljørelatert sertifikatkonfigurasjon og automatisk netrc-autentisering. Ta hensyn til disse avhengighetene før valget. For en godkjent privat CA-sertifikatsamling kan du angi en uttrykkelig sti:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Bruk den faktisk godkjente samlingen og la verifiseringen være på. Hold en separat Session for hver rutingspolicy i stedet for å endre én mens annet arbeid bruker den.

Hvis ingen av alternativene forklarer programmets rute, sammenlign en isolert Session med programmet i samme kjøremiljø og mot samme harmløse mål. Noter hvilke proxyvariabler som finnes, verdien av trust_env og om kallet oppgir proxies; hold URL-er med påloggingsopplysninger ute av delte logger. Suksess i isolasjon retter neste undersøkelse mot Session-opprettelse, adaptere, flyter med forberedte forespørsler eller egne transporter. En miljøtest med curl avgjør ikke Requests’ egen sammenslåingsatferd.

Relaterte artikler