From 999dc96e7b015c2b591b0623c3944f67f6dcb0bb Mon Sep 17 00:00:00 2001 From: cwx1281816 Date: Tue, 26 Nov 2024 17:01:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?RK3863=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteOsUpgrade/liteOsUpgrade_L0_app.py | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py index f0a7398..7224d4b 100644 --- a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py +++ b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py @@ -50,18 +50,26 @@ class liteOsUpgrade_L0(BaseApp): except Exception as e: logger.error(e) raise e - + if system_type == "Windows": + lock_file = r'C:/deviceupgrade/task_l0.lock' + else: + lock_file = '/home/openharmony/deviceupgrade/task_l0.lock' if self.params_dict.get("isUpdate") == "False": + if not is_can_exec(lock_file): + return False + # 如果小于480秒,直接return false logger.printLog("no need upgrade board") return True # 执行升级 try: if not self.upgrade(): + delete_file_lock(lock_file) logger.printLog("%s upgrade fail") return False return True except Exception as e: + delete_file_lock(lock_file) logger.error(e) raise e @@ -220,6 +228,54 @@ class liteOsUpgrade_L0(BaseApp): finally: file_lock.releaseFile() + @timeout(1000) + def is_can_exec(lock_file): + """ + 判断升级是否可以执行 + @param lock_file: 文件路径 + """ + lock_duration = 8 * 60 # 8分钟(以秒为单位) + if os.getenv('wait_time') is not None: + lock_duration = int(os.getenv('wait_time')) + # 检查锁文件 + if os.path.exists(lock_file): + # 获取锁文件的创建时间 + lock_time = os.path.getmtime(lock_file) + current_time = time.time() + # 判断锁是否超时 + if (current_time - lock_time) < lock_duration: + logger.error("ask is already running. Exiting.") + return False + else: + logger.warning("ask running time is more than %s second, can exec" % lock_duration) + delete_file_lock(lock_file) + create_file_lock(lock_file) + return True + else: + logger.info("no tasks are being executed") + create_file_lock(lock_file) + return True + + def create_file_lock(lock_file): + """ + 创建文件锁 + @param lock_file: 文件路径 + """ + directory = os.path.dirname(lock_file) + if not os.path.exists(directory): + os.makedirs(directory) + logger.info("create_file_lock") + with open(lock_file, 'w') as f: + f.write('locked, please can not delete') + + def delete_file_lock(lock_file): + """ + 删除文件 + @param lock_file: 文件路径 + """ + logger.info("delete_file_lock") + if os.path.exists(lock_file): + os.remove(lock_file) if __name__ == "__main__": param_file = sys.argv[1] -- Gitee From 61aca72685f824dbb3d4159c79628e0c79b0970b Mon Sep 17 00:00:00 2001 From: cwx1281816 Date: Wed, 27 Nov 2024 10:48:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?RK3863=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py index 7224d4b..a367cac 100644 --- a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py +++ b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_L0_app.py @@ -2,6 +2,7 @@ import uuid import sys import subprocess +import platform from core.base import BaseApp, dec_stepmsg from util.file_locker import FileLock @@ -50,6 +51,7 @@ class liteOsUpgrade_L0(BaseApp): except Exception as e: logger.error(e) raise e + system_type = platform.system() if system_type == "Windows": lock_file = r'C:/deviceupgrade/task_l0.lock' else: -- Gitee