第七十四章
WSaiOS Runtime Scheduler Implementation
运行时调度器工程实现
74.1 Runtime Scheduler概述
前一章完成了:
Execution Engine
实现了:
Action
↓
Execution Queue
↓
Dispatcher
↓
Executor
但是:
Execution Engine 只是执行动作。
真正决定:
- 哪个任务先执行;
- 哪个任务暂停;
- 哪个任务恢复;
- 哪个任务取消;
都属于:
Runtime Scheduler
74.1.1 工程定义
Runtime Scheduler 是 WSaiOS 的运行时调度中心。
负责:
- Task Scheduling(任务调度)
- Priority Scheduling(优先级)
- Resource Scheduling(资源调度)
- Timeout Control(超时控制)
- Retry Management(失败重试)
- Task Lifecycle(生命周期)
注意:
Scheduler 不负责:
- 推理
- 决策
- 执行逻辑
它只负责:
什么时候执行。
74.2 调度器位置
整体流程:
Decision Engine
│
▼
Action Queue
│
▼
Runtime Scheduler
│
▼
Execution Engine
│
▼
Result
因此:
Scheduler 位于:
Decision 与 Execution 之间。
74.3 Scheduler核心架构
Runtime Scheduler
│
┌──────┼────────────┐
▼ ▼ ▼
Queue Priority Resource
Manager Manager Manager
│
▼
Dispatcher
各模块职责:
Queue Manager
维护等待队列。
Priority Manager
决定:
先执行谁。
Resource Manager
判断:
是否有资源。
Dispatcher
交给Execution。
74.4 Task对象
Action属于动作。
Scheduler调度的是:
Task。
Task:
可以包含:
多个Action。
例如:
Task
Generate Website
├── Generate Content
├── Generate FAQ
├── Publish
└── Notify
因此:
Task:
高于:
Action。
Python:
class Task:
def __init__(self):
self.task_id=""
self.actions=[]
self.priority=5
self.status="waiting"
74.5 Priority Scheduling
WSaiOS采用:
Priority Queue。
例如:
| Priority | 说明 |
|---|---|
| 1 | Highest |
| 2 | High |
| 3 | Normal |
| 4 | Low |
| 5 | Background |
调度:
永远:
先Priority最小。
Python:
import heapq
即可实现。
74.6 Resource Scheduling
任务:
不是一直能运行。
例如:
CPU:
CPU > 90%
那么:
暂停:
SEO Generation
等待:
CPU恢复。
Resource Manager:
负责:
CPU
Memory
Disk
Network
判断。
74.7 Timeout Control
例如:
HTTP:
30秒。
超过:
终止。
Python:
timeout=30
状态:
Running
↓
Timeout
↓
Retry
74.8 Retry机制
不是:
失败结束。
而是:
例如:
Retry = 3
失败:
Attempt 1
↓
Attempt 2
↓
Attempt 3
↓
Failed
重试策略:
class RetryPolicy:
max_retry=3
74.9 Scheduler状态机
Task:
生命周期:
Created
↓
Waiting
↓
Scheduled
↓
Running
↓
Completed
异常:
Running
↓
Timeout
↓
Retry
↓
Completed
取消:
Running
↓
Cancel
↓
Stopped
建议统一采用有限状态机(FSM)实现状态转换,每个状态只能迁移到预定义的下一个状态,避免状态混乱。
74.10 Runtime Event
Scheduler:
通过事件:
控制。
例如:
TaskCreated
TaskStarted
TaskCompleted
TaskTimeout
TaskRetry
TaskCanceled
统一:
Event Bus:
发送。
74.11 Scheduler目录
runtime/
├── scheduler.py
├── queue_manager.py
├── priority_manager.py
├── resource_manager.py
├── timeout_manager.py
├── retry_manager.py
├── lifecycle.py
└── task.py
74.12 Scheduler主循环
class RuntimeScheduler:
def run(self):
while True:
task=self.queue.next()
if task is None:
continue
if not self.resource.available(task):
continue
self.dispatch(task)
这里可以进一步增加:
- 空闲等待(避免CPU空转)
- 停止信号
- 定时任务唤醒
作为 v1.1 优化。
74.13 最小验证实验
创建:
三个Task:
Task A
Priority=1
Task B
Priority=3
Task C
Priority=2
执行:
Scheduler。
预期:
Task A
↓
Task C
↓
Task B
如果:
CPU:
95%
则:
Task C
↓
Waiting
CPU恢复:
继续执行。
验证:
- Priority 是否正确;
- Resource 是否生效;
- Timeout 是否触发;
- Retry 是否工作;
- 状态是否符合生命周期。
74.14 WSaiOS Runtime Scheduler v1.0
Runtime Scheduler
│
┌──────────┬──────────┬──────────┐
▼ ▼ ▼
Queue Priority Resource
Manager Manager Manager
│
┌────────────┴────────────┐
▼ ▼
Timeout Manager Retry Manager
│
▼
Execution Engine
74.15 本章总结
完成:
WSaiOS Runtime Scheduler Implementation
实现:
- Task模型
- Priority Queue
- Resource Scheduling
- Timeout Control
- Retry Policy
- Task Lifecycle(FSM)
- Runtime Event
- Scheduler主循环
至此,WSaiOS 已经完成了认知层(Perception → Decision)和执行层(Scheduler → Execution)的基本工程框架。下一章建议进入第七十五章:WSaiOS Plugin Framework Implementation(插件框架工程实现),将执行能力扩展到可插拔模块,而不是把插件机制混入执行引擎本身。这种分层更符合长期演进和工程维护。