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 કૉલની બાજુમાં રાખો.