Mga proxy ng Session sa Python Requests at prayoridad ng environment
Gawing mahuhulaan ang routing ng Python Requests kapag nagtutulungan ang session.proxies, environment variable, opsyon sa kahilingan at trust_env.
Kung tumutukoy ang session.proxies sa isang endpoint pero ginagamit ng script ang proxy ng shell, hindi maaayos ng muling pagtatalaga sa parehong dictionary ang salungatan. Maaaring pagsamahin ng Requests ang proxy settings ng environment nang may prayoridad sa default ng Session. Piliin kung magpapatuloy ang Session sa pagtuklas ng settings sa environment.
Panatilihin ang pagtuklas sa environment, ibigay ang ruta sa kahilingan
Magpasa ng tahasang halaga sa bawat indibidwal na tawag, gaya ng rekomendasyon ng Requests upang maiwasan ang salungatang ito ng Session at environment:
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()
Palitan ang lokal na listener ng sa iyo. Kung naghahambing ng pampublikong HTTP endpoint, kumuha ng kandidato sa listahan ng mga HTTP proxy habang pareho ang patakaran ng Session. Kinokontrol nito ang ibinigay na mapping entries; sadyang pumili rin para sa ibang scheme o host na ginagamit ng application. Maaaring magmana ang serbisyo, IDE, container o CI runner ng ibang environment kaysa sa terminal.
Hayaang kontrolin ng Session ang sarili nitong settings
Kung hindi dapat tumuklas ang application ng proxy sa environment, itakda ang patakaran bago ang unang kahilingan:
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()
Nakaaapekto rin ang trust_env=False sa certificate configuration na kaugnay ng environment at awtomatikong netrc authentication. Isaalang-alang ang mga dependency na ito bago piliin ito. Para sa aprubadong pribadong CA bundle, maaaring magpasa ng tahasang path:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Gamitin ang tunay na aprubadong bundle at panatilihing nakabukas ang verification. Magkaroon ng hiwalay na Session para sa bawat routing policy sa halip na baguhin ang isa habang ginagamit ng ibang gawain.
Kung walang alternatibong nagpapaliwanag sa ruta ng application, ihambing ang nakahiwalay na Session sa application gamit ang parehong runtime at hindi mapaminsalang destinasyon. Itala ang naroroong proxy variable, halaga ng trust_env at kung nagpapasa ang tawag ng proxies; huwag isama ang URL na may kredensyal sa mga ibinabahaging log. Itinuturo ng tagumpay nang nakahiwalay ang susunod na pagsusuri sa paggawa ng Session, adapter, daloy ng inihandang kahilingan o custom transport. Hindi napagpapasyahan ng curl environment test ang sariling merge behavior ng Requests.