У меня есть процесс python, который работает непрерывно и каждую 1 минуту читает cfg файл с диска.
run.py
while True:
parser = configparser.ConfigParser()
parser.read('config.ini')
time.sleep(60)
Пользователь может запустить второй процесс, который изменяет config.ini
edit.py
def set_param(self, section, param, new_value):
parser = configparser.ConfigParser()
parser.read('config.ini')
current_cfg = parser[section][param] = new_value
with open('config.ini', 'w') as f:
current_cfg.write(f)
Сейчас этот код должен иметь 2 свойства:
1) run.py
должен читать файл конфигурации, только если он не редактируется edit.py
Другими словами, он должен ждать, пока функция set_param
не будет полностью выполнена.
2) последующие вызовы edit.py
не должны создавать конфликт. Новый вызов должен выполняться, только если файл не принадлежит предыдущему вызову.
Я думаю, мне нужно что-то вроде механизма блокировки. Я смотрел на https://docs.python.org/3.8/library/fcntl.html, но я не уверен, что это правильный инструмент, и я изо всех сил пытаюсь понять, как его использовать.
Как я могу исправить эту проблему?