Я читаю конфигурации из INI-файла, используя Python configparser. 95% времени работает отлично. Без каких-либо изменений в INI-файле (например, в середине регрессионного теста) configparser начнет возвращать пустые результаты, а затем, конечно, будет иметь ключевые ошибки при поиске вложенных конфигов.
Это говорит о том, что это не проблема с INI-файлом, так как он не меняется, а также потому, что это происходит иногда. Как только проблема возникает, она продолжает происходить во всех вызовах парсера конфигурации, пока я не убью программу и не перезапущу ее.
Я читаю конфигурацию так:
try:
path = os.path.dirname(os.path.realpath(__file__))
kml_ini = '/'.join([path, 'kml.ini'])
config = configparser.ConfigParser()
config.read(kml_ini)
db_conn_returnable = config['database']['db_connection'].strip()
except Exception as e:
print(e)
traceback.print_exc(file=sys.stdout)
pprint.pprint(config.sections())
pprint.pprint({section: dict(config.items(section)) for section in config.sections()})
Я получаю сообщение об ошибке: файл "/home/sahmed/anaconda3/envs/kml/lib/python3.6/configparser.py", строка 959, в getitem KeyError: 'database'
Мой INI-файл выглядит так:
[api]
server_debug=False
log_level=info
n_workers=10
[database]
db_connection=http://1.1.1.1:9191
user=admin
pass=whateverman
[cluster]
default_workers=3
Моя первоначальная мысль была проблемой с потоком, так как у меня 8 потоков, постоянно обращающихся к этому файлу конфигурации (хотя это не имеет смысла ... мы читаю только) так что я даже блок крепежа на чтение прочел, все равно не повезло. Что может вызвать такую ситуацию?