Proxys de Session a Python Requests i prioritat de l’entorn
Feu previsible l’encaminament de Python Requests quan interactuen session.proxies, variables d’entorn, opcions per petició i trust_env.
Si session.proxies apunta a un punt final però l’script utilitza el proxy de l’intèrpret d’ordres, tornar a assignar el mateix diccionari no resol el conflicte. Requests pot combinar la configuració del proxy de l’entorn amb prioritat sobre els valors per defecte de Session. Decidiu si Session ha de continuar descobrint la configuració de l’entorn.
Conserveu la descoberta de l’entorn i indiqueu rutes a la petició
Passeu valors explícits a cada crida, com recomana Requests per evitar aquest conflicte entre Session i entorn:
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()
Substituïu el punt d’escolta local pel vostre. Si compareu punts HTTP públics, trieu candidats de la llista de proxys HTTP mantenint fixa la política de Session. Això controla les entrades del mapatge proporcionat; decidiu deliberadament també per a altres esquemes o amfitrions de l’aplicació. Un servei, IDE, contenidor o executor CI pot heretar un entorn diferent del terminal.
Feu que Session controli la seva configuració
Si l’aplicació no ha de descobrir proxys de l’entorn, establiu la política abans de la primera petició:
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 també afecta la configuració de certificats vinculada a l’entorn i l’autenticació netrc automàtica. Considereu aquestes dependències abans de triar-lo. Per a un conjunt privat aprovat de certificats CA podeu passar una ruta explícita:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Feu servir el conjunt realment aprovat i manteniu la verificació activa. Conserveu una Session independent per cada política d’encaminament en lloc de modificar-ne una mentre altres tasques l’utilitzen.
Si cap alternativa explica la ruta de l’aplicació, compareu una Session aïllada amb l’aplicació en el mateix entorn d’execució i amb una destinació inofensiva. Anoteu les variables de proxy presents, el valor de trust_env i si la crida passa proxies; excloeu els URL amb credencials dels registres compartits. L’èxit aïllat orienta la inspecció següent cap a la creació de Session, adaptadors, fluxos de peticions preparades o transports personalitzats. Una prova de l’entorn amb curl no determina el comportament de combinació propi de Requests.