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 ਸ਼ੁਰੂ ਕਰਨ ਵਾਲੇ shell ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕਰਦਾ, ਨਾ ਅਸੰਬੰਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਤੇ ਨਾ ਹੀ ਪਹਿਲਾਂ ਚੱਲ ਰਹੇ ਚਾਈਲਡ ਨੂੰ।
ਜੇ ਮਕਸਦ ਤੁਹਾਡੇ ਇੰਟਰਐਕਟਿਵ shell ਵਿੱਚ ਭਵਿੱਖ ਦੀਆਂ ਕਮਾਂਡਾਂ ਬਦਲਣਾ ਹੈ, ਤਾਂ ਉਹ ਬਦਲਾਅ shell ਵਿੱਚ ਕਰੋ। ਜੇ ਸਿਰਫ਼ ਇੱਕ ਸ਼ੁਰੂ ਕੀਤੇ ਸਾਧਨ ਨੂੰ ਵੱਖਰਾ ਰਸਤਾ ਚਾਹੀਦਾ ਹੈ, ਤਾਂ ਦਿਖਾਏ ਅਨੁਸਾਰ ਇਸਦਾ ਵਾਤਾਵਰਣ subprocess ਕਾਲ ਦੇ ਕੋਲ ਰੱਖੋ।