• 陈泽健'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
名称
最后提交
最后更新
..
data Loading commit data...
executors Loading commit data...
models Loading commit data...
routers Loading commit data...
schemas Loading commit data...
services Loading commit data...
simulators Loading commit data...
tasks Loading commit data...
utils Loading commit data...
websocket Loading commit data...
__init__.py Loading commit data...
config.py Loading commit data...
database.py Loading commit data...
main.py Loading commit data...