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 ጥሪ አጠገብ ያቆዩ።