HTTP_PROXY, http_proxy എന്നിവയുള്ള ConfigParser DuplicateOptionError
Linux പരിതസ്ഥിതിയിൽ HTTP_PROXY ഉം http_proxy ഉം ഒരുമിച്ച് നിലനിൽക്കാമെങ്കിലും ConfigParser ഡിഫോൾട്ടുകളായി ഉപയോഗിക്കുമ്പോൾ DuplicateOptionError ഉണ്ടാകുന്നത് എന്തുകൊണ്ടെന്ന് മനസ്സിലാക്കുക.
വലിയക്ഷരവും ചെറിയക്ഷരവും വേർതിരിക്കുന്ന പരിതസ്ഥിതിയിൽ HTTP_PROXY ഉം http_proxy ഉം വ്യത്യസ്ത പേരുകളാകാം. ConfigParser സാധാരണയായി ഓപ്ഷൻ പേരുകൾ ചെറിയക്ഷരമാക്കി മാറ്റുന്നു, അതിനാൽ രണ്ടും ഡിഫോൾട്ടുകളിൽ നൽകിയാൽ അവ ഒറ്റ ഇരട്ടി ഓപ്ഷനായി മാറാം.
അതുകൊണ്ട് <dict> എന്ന പേരു പറയുന്ന പിശക് ഏതെങ്കിലും പ്രോക്സി കണക്ഷൻ ശ്രമിക്കുന്നതിനു മുമ്പുതന്നെ ConfigParser(defaults=os.environ)-ൽ നിന്ന് ഉണ്ടായേക്കാം.
ഈ പാഴ്സറിൽ വലിയക്ഷരത്തോട് സംവേദിയായ പരിതസ്ഥിതി പേരുകൾ ആവശ്യമാണെങ്കിൽ, അവ ലോഡ് ചെയ്യുന്നതിനു മുമ്പ് നോർമലൈസേഷൻ നയം സജ്ജീകരിക്കുക:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})ഇതോടെ രണ്ട് അക്ഷരവിന്യാസങ്ങളും വേർതിരിഞ്ഞു നിൽക്കും. തിരയലുകളും പിന്നീട് വായിക്കുന്ന ഏത് കോൺഫിഗറേഷനും ഇപ്പോൾ ആ നയം പിന്തുടരുന്നു. ഇന്റർപൊളേഷൻ ഓഫാക്കുന്നത് പരിതസ്ഥിതി മൂല്യങ്ങളിലെ ശതമാന ചിഹ്നങ്ങൾ ഇന്റർപൊളേഷൻ സിന്തക്സായി കണക്കാക്കുന്നതും തടയുന്നു.
ആപ്ലിക്കേഷന് വലിയക്ഷരത്തോട് സംവേദിയല്ലാത്ത കോൺഫിഗറേഷൻ വേണമെങ്കിൽ, ഉദ്ദേശിക്കുന്ന പരിതസ്ഥിതി ഇൻപുട്ടുകൾ വ്യക്തമായി തിരഞ്ഞെടുക്കുകയും പാഴ്സറിനു നൽകുന്നതിനു മുമ്പ് ആ ക്ലയന്റിന്റെ പ്രോക്സി നിയമങ്ങൾ അനുസരിച്ച് വൈരുദ്ധ്യമുള്ള അക്ഷരവിന്യാസങ്ങൾ പരിഹരിക്കുകയും ചെയ്യുക.
strict=False മാറ്റുന്നത് ഇരട്ടികൾ സ്വീകരിക്കുന്നു, പക്ഷേ ഏത് വൈരുദ്ധ്യമുള്ള പ്രോക്സി മൂല്യമാണ് ആപ്ലിക്കേഷൻ ഉപയോഗിക്കേണ്ടതെന്ന് നിർവചിക്കുന്നില്ല. പാഴ്സർ നിങ്ങളുടെ നിയന്ത്രണത്തിലില്ലെങ്കിൽ ആകസ്മികമായ ഒരു പരിതസ്ഥിതി അക്ഷരവിന്യാസം നീക്കുന്നത് ഉചിതമായേക്കാം; ആദ്യം താഴെയുള്ള ക്ലയന്റിന് ഏത് മൂല്യം വേണമെന്ന് നിർണ്ണയിക്കുക.