python файл совместно используется несколькими процессами - PullRequest
0 голосов
/ 30 марта 2020

У меня есть процесс 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, но я не уверен, что это правильный инструмент, и я изо всех сил пытаюсь понять, как его использовать.

Как я могу исправить эту проблему?

...