Compare commits

...

6 Commits

Author SHA1 Message Date
毛鹏
c3483f75ae 优化 2025-12-05 21:12:06 +08:00
毛鹏
3ab7aad511 fix(auto_system): 修复调度器停止逻辑防止重复进程冲突
- 仅在主进程中执行调度器停止操作
- 增加对scheduler.running属性的安全访问
- 添加调度器停止成功日志记录
- 捕获并记录停止调度器时的异常信息
2025-12-05 21:09:31 +08:00
毛鹏
afe98ebb0e fix(auto_system): 修复停止调度器时未判断调度器状态的问题
- 增加判断调度器是否处于运行状态后再调用 shutdown
- 防止未运行调度器调用 shutdown 导致异常
- 优化异常捕获时的日志信息
- 提高停止调度器函数的健壮性
2025-12-05 21:06:28 +08:00
毛鹏
d9e04f58ef 优化 2025-12-05 21:04:03 +08:00
毛鹏
82431082be 优化 2025-12-05 20:57:32 +08:00
毛鹏
998765cff0 优化 2025-12-05 20:56:00 +08:00
2 changed files with 12 additions and 12 deletions

Binary file not shown.

View File

@@ -37,7 +37,7 @@ class AutoSystemConfig(AppConfig):
self.populate_time_tasks()
self.run_tests()
self.init_ass()
# 设置定时任务调度器
self.setup_scheduler()
@@ -153,8 +153,6 @@ class AutoSystemConfig(AppConfig):
self.system_task.join()
except AttributeError:
pass
# 停止全局调度器
self.stop_scheduler()
def init_ass(self):
try:
@@ -189,7 +187,7 @@ class AutoSystemConfig(AppConfig):
try:
# 创建调度器实例
self.scheduler = BackgroundScheduler()
# 添加定时任务
self.scheduler.add_job(
self.set_case_status,
@@ -197,10 +195,10 @@ class AutoSystemConfig(AppConfig):
minutes=5,
id='set_case_status'
)
# 启动调度器
self.scheduler.start()
# 注册退出时停止调度器
atexit.register(self.stop_scheduler)
except Exception as e:
@@ -209,19 +207,21 @@ class AutoSystemConfig(AppConfig):
def stop_scheduler(self):
"""停止调度器"""
try:
if hasattr(self, 'scheduler') and self.scheduler:
self.scheduler.shutdown()
# 只有在主进程中才尝试停止调度器
if not self._is_duplicate_process():
if hasattr(self, 'scheduler') and self.scheduler and getattr(self.scheduler, 'running', False):
self.scheduler.shutdown()
log.system.info("调度器已停止")
except Exception as e:
log.system.error(f'停止调度器异常: {e}')
def set_case_status(self):
from django.db import transaction
try:
# 确保开始时连接是干净的
close_old_connections()
from src.auto_test.auto_ui.models import UiCase, UiCaseStepsDetailed, PageSteps
from src.auto_test.auto_pytest.models import PytestCase
from src.auto_test.auto_api.models import ApiInfo, ApiCase, ApiCaseDetailed
@@ -243,9 +243,9 @@ class AutoSystemConfig(AppConfig):
status=TaskEnum.PROCEED.value,
update_time__lt=ten_minutes_ago
).update(status=TaskEnum.FAIL.value)
# 确保事务提交
transaction.commit()
finally:
# 确保结束时连接被关闭
close_old_connections()
close_old_connections()