Python subprocess.run: beri satu proses anak lingkungan proxy sendiri
Teruskan lingkungan yang disalin ke subprocess.run saat satu perintah anak membutuhkan proxy tanpa mengubah lingkungan Python untuk pekerjaan lain.
Program Python dapat memberi satu perintah anak lingkungan proxy sendiri. Salin nilai yang diwarisi, ubah salinannya, lalu teruskan ke 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,
)Contoh ini mengasumsikan curl sudah tersedia. Permintaan HTTPS-nya dapat memakai proxy HTTP yang mendukung terowongan yang dibutuhkan. Untuk pemeriksaan situs publik ini tanpa kredensial proxy yang dikonfigurasi, kandidat dari daftar proxy HTTP dapat menggantikan endpoint contoh. Proses anak tetap menerima sisa lingkungan yang disalin, termasuk pengaturan lewati yang berlaku.
Meneruskan env memberi pemanggilan ini lingkungan tersebut. Salinan itu menghindari perubahan os.environ untuk pekerjaan lain di proses Python.
Menetapkan langsung ke os.environ juga bermakna: itu memperbarui lingkungan proses Python dan dapat memengaruhi anak yang dimulai sesudahnya. Itu tidak memperbarui shell yang menjalankan Python, aplikasi yang tidak terkait, atau anak yang sudah berjalan.
Jika tujuannya mengubah perintah mendatang di shell interaktif Anda, lakukan perubahan itu di shell. Jika hanya satu alat yang dijalankan membutuhkan rute berbeda, simpan lingkungannya di samping pemanggilan subprocess seperti ditunjukkan.