Is-sejħiet li ġejjin joħolqu żewġ proċessi shell separati:

os.system('unset http_proxy')
os.system('curl https://example.com/')

L-ewwel shell ineħħi varjabbli mill-ambjent tiegħu stess u jispiċċa. Il-proċess Python għad għandu l-valur oriġinali. It-tieni shell jerġa' jirtih.

Agħti lit-tifel l-ambjent li kellek f'moħħok

Meta jkun hemm biss kmand wieħed li għandu jopera mingħajr varjabbli tal-proxy li jirtu, ikkopja l-ambjent ta' Python u għaddi l-kopja lit-tifel:

import os
import subprocess

env = os.environ.copy()
for name in ('http_proxy', 'https_proxy', 'all_proxy',
             'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'):
    env.pop(name, None)
subprocess.run(['curl', '--proxy', '', 'https://example.com/'],
               env=env, check=True)

Is-setting ċar vojt tal-proxy ta' curl jegħleb ukoll l-għażla tal-proxy mill-konfigurazzjoni ta' curl stess. Il-kopja tal-ambjent iżżomm valuri oħra li l-kmand jista' jkollu bżonn. Li minflok tgħaddi ambjent vojt jista' jneħħi l-mogħdijiet tat-tiftix tal-eżekutabbli u l-konfigurazzjoni tal-applikazzjoni mhux relatata.

Għal operazzjonijiet sussegwenti fil-proċess Python innifsu, ibdel os.environ b'mod deliberat. Dan jaffettwa dak li jirtu t-tfal li jkunu għadhom kemm inħolqu; ma jerġax jikteb l-ambjent tat-terminal ġenitur u mhux bilfors jerġa' jikkonfigura l-klijenti HTTP li jkunu diġà qabdu s-settings tagħhom.

L-subprocess API jiddokumenta l-argument env, u os.environ jiddeskrivi l-ambjent tal-proċess ta' Python. Dawn l-ambiti huma r-raġuni għaliex kmand shell jista' jirrapporta suċċess waqt li t-talba li jmiss xorta tuża l-proxy antik.

Fl-aħħar, iċċekkja l-klijent li qed tħaddem tassew. Il-varjabbli tal-ambjent huma input wieħed tal-konfigurazzjoni. Għażla espliċita tal-proxy jew il-konfigurazzjoni tal-applikazzjoni stess jistgħu jkomplu jagħżlu proxy wara li dawk il-varjabbli jkunu spiċċaw.

Artikli relatati