HTTP_PROXY və http_proxy ilə ConfigParser DuplicateOptionError
Linux mühitində HTTP_PROXY və http_proxy-nin niyə birlikdə mövcud ola bildiyini, lakin ConfigParser defoltları kimi istifadə edildikdə DuplicateOptionError yaratdığını anlayın.
Hərf ölçüsünə həssas mühitdə HTTP_PROXY və http_proxy fərqli adlar ola bilər. ConfigParser adətən seçim adlarını kiçik hərflərə çevirir, ona görə də hər ikisini defoltlara vermək onları bir dublikat seçimə çevirə bilər.
Buna görə <dict> adını çəkən xəta hər hansı proxy bağlantısı cəhd edilməmişdən əvvəl ConfigParser(defaults=os.environ) səbəbindən yarana bilər.
Tətbiq bu parserdə qəsdən hərf ölçüsünə həssas mühit adlarına ehtiyac duyursa, onları yükləməzdən əvvəl normallaşdırma siyasətini təyin edin:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Beləliklə iki yazılış ayrı qalır. Axtarışlar və sonradan oxunan istənilən konfiqurasiya da artıq bu hərf ölçüsünə həssas siyasətə uyğun gəlir. İnterpolyasiyanın söndürülməsi həm də mühit dəyərlərindəki faiz işarələrinin interpolyasiya sintaksisi kimi qəbul edilməsinin qarşısını alır.
Tətbiq hərf ölçüsünə həssas olmayan konfiqurasiya tələb edirsə, nəzərdə tutulan mühit girişlərini açıq şəkildə seçin və parserə ötürməzdən əvvəl ziddiyyətli yazılışları həmin müştərinin proxy qaydalarına uyğun həll edin.
strict=False dəyişdirmək dublikatları qəbul edir, lakin tətbiqin hansı ziddiyyətli proxy dəyərindən istifadə etməli olduğunu müəyyən etmir. Parserə nəzarət etmədikdə təsadüfi bir mühit yazılışını silmək məqsədəuyğun ola bilər; əvvəlcə aşağı axın müştərisinin hansı dəyərə ehtiyacı olduğunu müəyyənləşdirin.