Jei session.proxies nurodo vieną galinį tašką, bet scenarijus naudoja apvalkalo tarpinį serverį, to paties žodyno priskyrimas iš naujo konflikto neišspręs. Requests gali jungti aplinkos tarpinių serverių nustatymus suteikdamas jiems pirmenybę prieš Session numatytuosius. Nuspręskite, ar Session turėtų toliau aptikti nustatymus aplinkoje.

Palikite aplinkos aptikimą, maršrutus pateikite užklausoje

Perduokite aiškias reikšmes atskiram iškvietimui, kaip Requests rekomenduoja šiam Session ir aplinkos konfliktui išvengti:

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

Vietinį klausytoją pakeiskite savuoju. Lygindami viešus HTTP taškus, rinkitės iš HTTP tarpinių serverių sąrašo ir nekeiskite Session politikos. Tai valdo pateiktus atvaizdžio įrašus; sąmoningai pasirinkite ir kitoms programos schemoms ar kompiuteriams. Tarnyba, IDE, konteineris ar CI vykdytojas gali paveldėti kitokią aplinką nei terminalas.

Leiskite Session valdyti savo nustatymus

Jei programa neturėtų aptikti tarpinių serverių iš aplinkos, nustatykite politiką prieš pirmą užklausą:

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 taip pat veikia su aplinka susijusią sertifikatų konfigūraciją ir automatinį netrc autentifikavimą. Prieš pasirinkdami įvertinkite šias priklausomybes. Patvirtintam privačiam CA sertifikatų rinkiniui galite pateikti aiškų kelią:

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

Naudokite tikrai patvirtintą rinkinį ir palikite tikrinimą įjungtą. Kiekvienai maršrutizavimo politikai turėkite atskirą Session, užuot keitę vieną, kai ja naudojasi kitos užduotys.

Jei nė vienas variantas nepaaiškina programos kelio, palyginkite izoliuotą Session su programa toje pačioje vykdymo aplinkoje ir su nekenksminga paskirtimi. Užrašykite esamus tarpinių serverių kintamuosius, trust_env reikšmę ir ar iškvietimas perduoda proxies; URL su prisijungimo duomenimis neįtraukite į bendrinamus žurnalus. Izoliuota sėkmė kitą tyrimą nukreipia į Session kūrimą, adapterius, paruoštų užklausų srautus ar nuosavus transportus. Aplinkos bandymas su curl nenustato paties Requests jungimo elgsenos.

Susiję straipsniai