Python subprocess.run. մեկ զավակ գործընթացին տալ սեփական վստահված սերվերի միջավայր
Փոխանցեք պատճենված միջավայրը subprocess.run-ին, երբ մեկ զավակ հրամանին վստահված սերվեր է պետք՝ առանց Python-ի միջավայրը այլ աշխատանքի համար փոխելու։
Python ծրագիրը կարող է մեկ զավակ հրամանին տալ սեփական վստահված սերվերի միջավայր։ Պատճենեք ժառանգված արժեքները, փոխեք պատճենը և փոխանցեք այն 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,
)Օրինակը ենթադրում է, որ curl-ն արդեն հասանելի է։ Նրա HTTPS հարցումը կարող է օգտագործել HTTP վստահված սերվեր, որը աջակցում է պահանջվող թունելին։ Առանց վստահված սերվերի հավատարմագրերի կարգավորման այս հանրային կայքի ստուգման համար HTTP վստահված սերվերների ցանկից թեկնածուն կարող է փոխարինել օրինակի վերջնակետը։ Զավակը դեռ ստանում է պատճենված միջավայրի մնացած մասը՝ ներառյալ կիրառելի շրջանցման կարգավորումները։
env-ի փոխանցումն այս կանչին տալիս է այդ միջավայրը։ Պատճենը խուսափում է os.environ-ը Python գործընթացի այլ աշխատանքի համար փոխելուց։
Ուղղակիորեն os.environ-ին վերագրելը նույնպես իմաստ ունի. այն թարմացնում է Python գործընթացի միջավայրը և կարող է ազդել ավելի ուշ գործարկվող զավակների վրա։ Այն չի թարմացնում Python-ը գործարկած shell-ը, անկապ հավելվածը կամ արդեն աշխատող զավակը։
Եթե նպատակը ձեր ինտերակտիվ shell-ում ապագա հրամանները փոխելն է, կատարեք այդ փոփոխությունը shell-ում։ Եթե միայն մեկ գործարկված գործիքին է պետք այլ ուղի, պահեք նրա միջավայրը subprocess կանչի կողքին, ինչպես ցույց է տրված։