Python subprocess.run: darlle a un fillo o seu propio contorno de proxy
Pase un contorno copiado a subprocess.run cando un comando fillo necesita un proxy sen cambiar o contorno de Python para outro traballo.
Un programa de Python pode darlle a un comando fillo o seu propio contorno de proxy. Copie os valores herdados, modifique a copia e pásaa a subprocess.run:
import os
import subprocess
child_env = os.environ.copy()
child_env["https_proxy"] = "http://proxy.example:8080"
subprocess.run(
["curl", "--head", "https://www.example.com/"],
env=child_env,
check=True,
timeout=30,
)O exemplo supón que curl xa está dispoñible. A súa solicitude HTTPS pode usar un proxy HTTP que admita o túnel necesario. Para esta comprobación dun sitio público sen credenciais de proxy configuradas, un candidato da lista de proxies HTTP pode substituír o punto de conexión do exemplo. O fillo segue recibindo o resto do contorno copiado, incluídas as configuracións de omisión que correspondan.
Pasar env dálle a esta invocación ese contorno. A copia evita cambiar os.environ para outro traballo no proceso de Python.
Asignar directamente a os.environ tamén ten sentido: actualiza o contorno do proceso de Python e pode afectar os fillos iniciados despois. Non actualiza a consola que iniciou Python, nin unha aplicación non relacionada, nin un fillo que xa se está executando.
Se a intención é cambiar comandos futuros na súa consola interactiva, faga ese cambio na consola. Se só unha ferramenta lanzada necesita unha ruta distinta, manteña o seu contorno xunto á invocación de subprocess, como se mostra.