123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # time: 2024/4/11 9:07
- # file: monitor.py
- # author: David
- # company: shenyang JY
- import json
- import os
- import subprocess
- from pathlib import Path
- script_path = str(Path.cwd().resolve().parent.parent.parent / 'bin' / 'restart-forecast.sh')
- config_folder = Path.cwd().resolve().parent
- class Monitor(object):
- def __init__(self, logger, args):
- self.args = args
- self.logger = logger
- def update_config(self):
- files = list(config_folder.rglob("ModelCDQ_*"))
- files.sort(key=lambda x: (str(x)[str(x).index("ModelCDQ_")+9:-1]))
- if len(files) > 0:
- try:
- opt = vars(self.args.parse_args_and_yaml())
- file = files[-1]
- with open(file, 'r', encoding='utf-8') as f:
- lines = f.readlines() # 读取第一行参数
- if "ModelCDQ" in lines[0].strip():
- content = lines[0].strip()
- else:
- content = lines[1].strip()
- content = eval(content[content.index("ModelCDQ")+11:])
- content = content[0]['str']
- update_opt = json.loads(content)
- for key, value in update_opt.items():
- opt[key] = value
- print("key:", key, "value:", value)
- self.logger.info("下发配置文件,更新后的参数为:{}".format(opt))
- self.args.save_args_yml(opt, isdict=True)
- self.delete_file(files)
- if opt['reset_sys'] is True:
- self.logger.info("-----重启超短期算法包-----")
- subprocess.run(["sh", script_path])
- except Exception as e:
- self.logger.critical("超短期monitor任务出错:{}".format(e.args))
- self.delete_file(files)
- def delete_file(self, files):
- for filename in files:
- if os.path.exists(filename):
- os.remove(filename)
- self.logger.info(f"文件 {filename} 删除成功!")
- else:
- self.logger.info(f"文件 {filename} 不存在。")
- if __name__ == '__main__':
- from config import myargparse
- from logs import Log
- args = myargparse(discription="场站端配置", add_help=False)
- log = Log()
- mo = Monitor(log.logger, args)
- mo.update_config()
|