ConfigParser DuplicateOptionError met HTTP_PROXY en http_proxy
Verstaan waarom HTTP_PROXY en http_proxy in 'n Linux-omgewing saam kan bestaan, maar tog DuplicateOptionError veroorsaak wanneer hulle as ConfigParser-verstellings gebruik word.
In 'n omgewing wat hoofletters en kleinletters onderskei, kan HTTP_PROXY en http_proxy twee verskillende name wees. ConfigParser maak gewoonlik opsiename klein, so as albei in die verstekwaardes ingelees word, word hulle een duplikaat-opsie.
'n Fout wat <dict> noem, kan dus uit ConfigParser(defaults=os.environ) kom, nog voordat enige proxy-verbinding probeer word.
As die toepassing doelbewus hooflettergevoelige omgewingsname in hierdie ontleder nodig het, stel die normaliseringsbeleid voordat hulle gelaai word:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Só bly die twee spellings apart. Opsoek en enige konfigurasie wat daarna gelees word, volg nou ook daardie hooflettergevoelige beleid. Deur interpolasie af te skakel, word persenttekens in omgewingswaardes ook nie as interpolasiesintaksis hanteer nie.
As die toepassing hoofletteronsensitiewe konfigurasie vereis, kies die bedoelde omgewingsinsette uitdruklik en besleg botsende spellings volgens daardie klant se proxy-reëls voordat hulle aan die ontleder gegee word.
Deur strict=False te verander, word duplikate aanvaar, maar dit bepaal nie watter botsende proxy-waarde die toepassing moet gebruik nie. Om een toevallige omgewingspelling te verwyder, kan gepas wees wanneer jy nie die ontleder beheer nie; bepaal eers watter waarde die stroomafwaartse klant nodig het.