Есть 2 модуля: alarm_config (отвечает за чтение конфига из файла) и alarm_manager (получает настройки из alarm_config и заведует алармами). Хочу при обновлении настроек в файле, обновлять их и менеджере. НО! Когда насильно вызывают реинициализацию менеджера, новые настройки вижу, а при проверке аларма (который происходит в бесконечном цикле основного модуля) — нет, там старые значения.
#alarm_config.py
class AlarmConfig:
def __init__(self, file_name=os.path.join(os.path.dirname(__file__), os.pardir, 'alarms.cfg')):
self._conf = self._load_alarms(file_name)
def subsсribe(self, cb):
self.cb = cb
@property
def alarms(self):
alarms = list(self._conf.items('alarms'))
........
return alarms_list
def update:
self.cb() #вызываю реинициализацию менеджера
alarmConfig = AlarmConfig()
#alarm_manager.py
class AlarmManager:
def __init__(self):
self.alarms = alarm_config.alarmConfig.alarms
alarm_config.alarmConfig.subsсribe(self.reinit)
self.isAlarm = False
def reinit(self):
self.alarms = alarm_config.alarmConfig.alarms
# вижу новые значения
.......
def checkAlarms(self, prop, data, callback):
self.alarms = alarm_config.alarmConfig.alarms
# вижу старые значения все равно
alarmManager = AlarmManager()
# main.py
while True:
try:
alarmManager.checkAlarms(item, data, alarm_callback)
Я сам не местный, в питоне не особо шарю(
Предполагаю, что тут какое то ПИТОНОВСКОЕ замыкание (если такие есть). В общем, буду рад любой подсказке 😊