Python subprocess.run: bir alt prosesə öz proxy mühitini verin
Bir alt əmrə proxy lazım olduqda Python mühitini digər işlər üçün dəyişmədən kopyalanmış mühiti subprocess.run-a ötürün.
Python proqramı bir alt əmrə öz proxy mühitini verə bilər. Miras alınan dəyərləri kopyalayın, kopyanı dəyişin və subprocess.run-a ötürün:
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,
)Nümunə curl-un artıq mövcud olduğunu qəbul edir. Onun HTTPS sorğusu tələb olunan tuneli dəstəkləyən HTTP proxy-dən istifadə edə bilər. Proxy məlumatları qurulmadan bu ictimai sayt yoxlaması üçün HTTP proxy siyahısından bir namizəd nümunədəki endpoint-i əvəz edə bilər. Alt proses kopyalanmış mühitin qalan hissəsini, o cümlədən tətbiq olunan bypass ayarlarını yenə də alır.
env ötürmək bu çağırışa həmin mühiti verir. Kopya os.environ-un Python prosesindəki digər işlər üçün dəyişməsinin qarşısını alır.
Birbaşa os.environ-a mənimsətmək də mənalıdır: o, Python-un proses mühitini yeniləyir və sonradan başladılan alt proseslərə təsir edə bilər. Python-u işə salan shell-i yeniləmir, əlaqəsiz tətbiqi və ya artıq işləyən alt prosesi də yeniləmir.
Məqsəd interaktiv shell-inizdə gələcək əmrləri dəyişməkdirsə, bu dəyişikliyi shell-də edin. Yalnız bir işə salınmış alət fərqli marşrut tələb edirsə, onun mühitini göstərildiyi kimi subprocess çağırışının yanında saxlayın.