• 陈泽健's avatar
    fix(scheduler): 定时任务立即执行未生成执行记录 + 取消即停中断后台线程 · bdac1140
    陈泽健 提交于
    5.44 前端「定时任务」页点击执行后,执行中心始终不生成新执行记录。
    根因:自动调度触发后 task_id 卡住 _running_tasks,所有手动点击被静默吞掉
    (return None),返回 200 但无新 execution。取消执行也不中断 Playwright 线程,
    run_execution 阻塞在 worker_thread.join() 上,全局锁数小时不释放。
    
    1. **scheduler_service.py** — run_task_once(task_id, manual=False) 新增
       manual 参数,手动触发绕过任务级 _running_tasks 守卫(仍受全局锁约束)
    
    2. **scheduled_tasks.py** — POST /{task_id}/run 改为同步预检:
       全局锁占用 → 返回 status:skipped + running_execution_id;
       空闲 → manual=True 触发,返回 status:triggered
    
    3. **execution_service.py** — 取消信号机制:
       request_cancel / is_cancel_requested / clear_cancel_requested 线程安全函数;
       cancel_execution 置 cancelled 后调用 request_cancel;
       run_all_cases_sync 用例循环开头检查并中断剩余用例;
       实时进度回调 _persist_case_result 按用例 commit
    
    4. **playwright_executor.py** — 步骤边界检查取消请求:
       execute_step 重试循环开头查 is_cancel_requested → 置 _cancel_requested
       → break 退出重试;最终状态设为 skipped
    
    5.44+5.202 已部署(deploy_scheduled_fix.py),容器 healthy
    Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
    bdac1140
名称
最后提交
最后更新
..
elements_mapping.json Loading commit data...
elements_mapping_v2.json Loading commit data...
page_url_mapping.json Loading commit data...