Proxys de Session en Python Requests e prioridade do ambiente
Fai previsible o encamiñamento de Python Requests cando interactúan session.proxies, variables de ambiente, axustes por petición e trust_env.
Se session.proxies apunta a un punto final pero o script usa o proxy do intérprete de ordes, volver asignar o mesmo dicionario non resolverá o conflito. Requests pode combinar a configuración do proxy do ambiente con prioridade sobre os valores predeterminados de Session. Decide se Session debe seguir descubrindo a configuración do ambiente.
Conserva o descubrimento do ambiente e indica rutas na petición
Pasa valores explícitos a cada chamada, como recomenda Requests para evitar este conflito entre Session e ambiente:
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()
Substitúe o punto de escoita local polo teu. Se comparas puntos HTTP públicos, escolle candidatos da lista de proxys HTTP mantendo fixa a política de Session. Isto controla as entradas do mapeamento proporcionado; decide deliberadamente tamén para outros esquemas ou hosts da aplicación. Un servizo, IDE, contedor ou executor CI pode herdar un ambiente diferente do terminal.
Fai que Session controle a súa configuración
Se a aplicación non debe descubrir proxys do ambiente, establece a política antes da primeira petición:
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 tamén afecta a configuración de certificados ligada ao ambiente e a autenticación netrc automática. Considera esas dependencias antes de escollelo. Para un conxunto privado aprobado de certificados CA podes pasar unha ruta explícita:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Usa o conxunto realmente aprobado e mantén a verificación activa. Conserva unha Session independente por cada política de encamiñamento en lugar de modificar unha mentres outros traballos a utilizan.
Se ningunha alternativa explica a ruta da aplicación, compara unha Session illada coa aplicación no mesmo ambiente de execución e cun destino inocuo. Anota as variables de proxy presentes, o valor de trust_env e se a chamada pasa proxies; exclúe os URL con credenciais dos rexistros compartidos. O éxito illado orienta a seguinte inspección cara á creación de Session, adaptadores, fluxos de peticións preparadas ou transportes personalizados. Unha proba do ambiente con curl non determina o comportamento de combinación propio de Requests.