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 ఇవ్వడం ఈ కాల్కు ఆ వాతావరణాన్ని ఇస్తుంది. కాపీ Python ప్రక్రియలో వేరే పని కోసం os.environ మారకుండా నిరోధిస్తుంది.
నేరుగా os.environకు కేటాయించడం కూడా అర్థవంతం: అది Python ప్రక్రియ వాతావరణాన్ని నవీకరిస్తుంది మరియు తర్వాత ప్రారంభమయ్యే చైల్డ్లను ప్రభావితం చేయవచ్చు. అది Python ప్రారంభించిన షెల్ను నవీకరించదు, సంబంధం లేని అప్లికేషన్ను లేదా ఇప్పటికే నడుస్తున్న చైల్డ్ను కూడా కాదు.
ఉద్దేశం మీ ఇంటరాక్టివ్ షెల్లో భవిష్యత్ కమాండ్లను మార్చడమైతే, ఆ మార్పును షెల్లో చేయండి. ఒకే ఒక ప్రారంభించిన సాధనానికి వేరే మార్గం కావాలంటే, చూపినట్లుగా దాని వాతావరణాన్ని subprocess కాల్ పక్కన ఉంచండి.