Python subprocess.run: bigyan ng sariling proxy environment ang isang child command
Ipasa ang kinopyang environment sa subprocess.run kapag kailangan ng proxy ang isang child command nang hindi binabago ang environment ng Python para sa ibang gawain.
Maaaring bigyan ng isang programang Python ang isang child command ng sarili nitong proxy environment. Kopyahin ang mga namamang halaga, baguhin ang kopya, at ipasa ito sa 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,
)Ipinapalagay ng halimbawa na available na ang curl. Maaaring gumamit ang HTTPS request nito ng HTTP proxy na sumusuporta sa kailangang tunnel. Para sa pagsusuring ito ng pampublikong site na walang naka-configure na proxy credentials, maaaring palitan ng kandidato mula sa listahan ng HTTP proxy ang endpoint ng halimbawa. Natatanggap pa rin ng child ang natitirang bahagi ng kinopyang environment, kasama ang anumang naaangkop na bypass settings.
Ang pagpasa ng env ay nagbibigay sa tawag na ito ng environment na iyon. Iniiwasan ng kopya na mabago ang os.environ para sa ibang gawain sa proseso ng Python.
May saysay din ang direktang pagtatalaga sa os.environ: ina-update nito ang environment ng proseso ng Python at maaaring makaapekto sa mga child na sisimulan pagkatapos. Hindi nito ina-update ang shell na naglunsad ng Python, ang isang aplikasyong walang kaugnayan, o ang child na tumatakbo na.
Kung ang layunin ay baguhin ang mga susunod na command sa iyong interactive na shell, gawin ang pagbabagong iyon sa shell. Kung isang tool lamang na nailunsad ang nangangailangan ng ibang ruta, panatilihin ang environment nito sa tabi ng subprocess na tawag gaya ng ipinakita.