|
13 | 13 | from datetime import datetime as dt |
14 | 14 |
|
15 | 15 | import time |
16 | | - |
| 16 | +import threading |
17 | 17 |
|
18 | 18 | # Disable WebdriverManager SSL verification. |
19 | 19 | os.environ['WDM_SSL_VERIFY'] = '0' |
|
27 | 27 | print(version_path.read_text().strip()) |
28 | 28 | print("[Python version]") |
29 | 29 | print("Python " + platform.python_version() + "(" + platform.architecture()[0] + ")\n") |
30 | | -from Framework.module_installer import install_missing_modules,update_outdated_modules |
| 30 | +from Framework.module_installer import check_min_python_version, install_missing_modules,update_outdated_modules |
| 31 | + |
| 32 | +check_min_python_version(min_python_version="3.11",show_warning=True) |
31 | 33 | install_missing_modules() |
32 | 34 |
|
33 | 35 | # Conditionally monkey-patch datetime module to include the `fromisoformat` method. |
@@ -389,6 +391,10 @@ def Login(cli=False, run_once=False, log_dir=None): |
389 | 391 | } |
390 | 392 | ) |
391 | 393 | node_id = CommonUtil.MachineInfo().getLocalUser().lower() |
| 394 | + from Framework.MainDriverApi import retry_failed_report_upload |
| 395 | + report_thread = threading.Thread(target=retry_failed_report_upload, daemon=True) |
| 396 | + report_thread.start() |
| 397 | + |
392 | 398 | RunProcess(node_id, run_once=run_once, log_dir=log_dir) |
393 | 399 |
|
394 | 400 | if run_once: |
@@ -926,39 +932,30 @@ def get_subfolders_created_before_n_days(folder_path, log_delete_interval): |
926 | 932 |
|
927 | 933 | folder_path = os.path.dirname(os.path.abspath(__file__)).replace(os.sep + "Framework", os.sep + '') + os.sep + 'AutomationLog' |
928 | 934 | log_delete_interval = ConfigModule.get_config_value("Advanced Options", "log_delete_interval") |
929 | | - if log_delete_interval: |
930 | | - auto_log_subfolders = get_subfolders_created_before_n_days(folder_path,int(log_delete_interval)) |
931 | | - auto_log_subfolders = [subfolder for subfolder in auto_log_subfolders if subfolder not in ['attachments','attachments_db','outdated_modules.json','temp_config.ini']] |
932 | 935 |
|
933 | | - if auto_log_subfolders: |
| 936 | + # By default set the automation log delete interval to 7 days |
| 937 | + if not isinstance(log_delete_interval,int): |
| 938 | + log_delete_interval = 7 |
| 939 | + else: |
| 940 | + if log_delete_interval <= 0: |
| 941 | + log_delete_interval = 7 |
| 942 | + |
| 943 | + def delete_old_automationlog_folders(): |
| 944 | + while True: |
| 945 | + auto_log_subfolders = get_subfolders_created_before_n_days(folder_path,int(log_delete_interval)) |
| 946 | + auto_log_subfolders = [subfolder for subfolder in auto_log_subfolders if subfolder not in ['attachments','attachments_db','outdated_modules.json','temp_config.ini','failed_reports']] |
| 947 | + |
934 | 948 | for subfolder in auto_log_subfolders: |
935 | 949 | shutil.rmtree(subfolder) |
936 | | - print(f'automation_log_cleanup: deleted {len(auto_log_subfolders)} that are older than {log_delete_interval} days') |
937 | | - |
938 | | - folder_path = os.path.dirname(os.path.abspath(__file__)).replace(os.sep + "Framework", |
939 | | - os.sep + '') + os.sep + 'AutomationLog' |
940 | | - log_date_str = config.get('Advanced Options', {}).get('last_log_delete_date', '') |
941 | | - log_delete_interval = config.get('Advanced Options', {}).get('log_delete_interval', '') |
942 | | - if log_date_str: |
943 | | - log_config_date = date.fromisoformat(log_date_str) |
944 | | - current_date = datetime.date.today() |
945 | | - time_difference = (current_date - log_config_date).days |
946 | | - if time_difference > int(log_delete_interval): |
947 | | - print("Cleaning Up AutomationLog Folder...") |
948 | | - for root, dirs, files in os.walk(folder_path, topdown=False): |
949 | | - for dir_name in dirs: |
950 | | - folder = os.path.join(root, dir_name) |
951 | | - shutil.rmtree(folder) |
952 | | - config.setdefault('Advanced Options', {})['last_log_delete_date'] = str(date.today()) |
953 | | - config.write() |
954 | | - else: |
955 | | - pass |
956 | | - # remaining_time = 7 - time_difference |
957 | | - # print(f"AutomationLog Folder will be deleted after {remaining_time+1} Days") |
958 | | - else: |
959 | | - config.setdefault('Advanced Options', {})['last_log_delete_date'] = str(date.today()) |
960 | | - config.write() |
961 | | - # print("AutomationLog Folder Not Found") |
| 950 | + if auto_log_subfolders: |
| 951 | + print(f'automation_log_cleanup: deleted {len(auto_log_subfolders)} that are older than {log_delete_interval} days') |
| 952 | + |
| 953 | + # Check every 5 hours for old automation logs |
| 954 | + time.sleep(60*60*5) |
| 955 | + |
| 956 | + # Create a background thread for deleting automation log |
| 957 | + thread = threading.Thread(target=delete_old_automationlog_folders, daemon=True) |
| 958 | + thread.start() |
962 | 959 |
|
963 | 960 | if show_browser_log: |
964 | 961 | CommonUtil.show_browser_log = True |
|
0 commit comments