एक 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 देने से इस कॉल को वही एनवायरनमेंट मिलता है। प्रतिलिपि Python प्रक्रिया में दूसरे काम के लिए os.environ बदलने से बचाती है।

सीधे os.environ में असाइन करना भी अर्थपूर्ण है: यह Python की प्रक्रिया एनवायरनमेंट को अद्यतन करता है और बाद में शुरू होने वाले चाइल्ड को प्रभावित कर सकता है। यह उस शेल को अद्यतन नहीं करता जिसने Python शुरू किया, न किसी असंबंधित एप्लिकेशन को और न ही पहले से चल रहे चाइल्ड को।

यदि इरादा आपके इंटरैक्टिव शेल में भविष्य के कमांड बदलना है, तो वह बदलाव शेल में करें। यदि केवल एक शुरू किए गए टूल को अलग मार्ग चाहिए, तो दिखाए अनुसार उसका एनवायरनमेंट subprocess कॉल के पास रखें।

संबंधित लेख