Python subprocess.run: ஒரு சைல்ட் கட்டளைக்கு அதன் சொந்த ப்ராக்ஸி சூழலை வழங்குங்கள்
ஒரு சைல்ட் கட்டளைக்கு ப்ராக்ஸி தேவைப்படும்போது, Python இன் சூழலை மற்ற வேலைக்கு மாற்றாமல் நகலெடுத்த சூழலை subprocess.run க்கு அனுப்புங்கள்.
ஒரு 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 ஐத் தொடங்கிய shell ஐப் புதுப்பிக்காது, தொடர்பில்லாத பயன்பாட்டையோ ஏற்கனவே இயங்கும் சைல்டையோ அல்ல.
நோக்கம் உங்கள் ஊடாடும் shell இல் எதிர்கால கட்டளைகளை மாற்றுவதாக இருந்தால், அந்த மாற்றத்தை shell இல் செய்யுங்கள். ஒரு கருவி மட்டும் வேறு பாதை தேவைப்பட்டால், காட்டியபடி அதன் சூழலை subprocess அழைப்பிற்கு அருகில் வைத்திருங்கள்.