任务队列管理,支持 WebSocket 实时更新,可调度、监控和控制后台任务,支持即时、定时和循环任务。
Task Scheduler - 任务调度器是一项面向实际任务的技能,主要用于基于 Bytebot Task System 实现的任务队列管理,支持 WebSocket 实时推送;Version : 1.0.0;
管理后台任务队列;定时执行任务;实时推送任务状态更新;追踪任务执行历史;优先级调度。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
基于 Bytebot Task System 实现的任务队列管理,支持 WebSocket 实时推送。
Version: 1.0.0
Features: 任务队列、定时调度、优先级管理、WebSocket 推送、状态追踪
让 OpenClaw 能够:
# 立即执行任务
python3 scripts/main.py create --description "Analyze codebase" --priority high
# 定时任务
python3 scripts/main.py create --description "Daily backup" --schedule "0 2 * * *"
# 带参数的任务
python3 scripts/main.py create --description "Process file" --params '{"path": "/tmp/data.csv"}'
# 列出所有任务 python3 scripts/main.py list # 查看任务详情 python3 scripts/main.py get --id task_123 # 取消任务 python3 scripts/main.py cancel --id task_123 # 重新运行失败任务 python3 scripts/main.py retry --id task_123
# 启动调度器 python3 scripts/main.py daemon --ws-port 8080 # WebSocket 连接接收实时更新 wscat -c ws://localhost:8080/ws
from task_scheduler import TaskScheduler, TaskPriority
# 初始化调度器
scheduler = TaskScheduler()
# 创建任务
task = scheduler.create_task(
description="Generate report",
priority=TaskPriority.HIGH,
handler=generate_report
)
# 定时任务
scheduler.schedule_task(
description="Daily sync",
cron="0 2 * * *",
handler=daily_sync
)
# 监听状态变化
@scheduler.on_status_change
def on_status(task_id, old_status, new_status):
print(f"Task {task_id}: {old_status} -> {new_status}")
# 启动调度
scheduler.start()
CREATED -> PENDING -> RUNNING -> COMPLETED
-> FAILED -> RETRYING
-> CANCELLED
| Priority | Value | Description |
|---|---|---|
| LOW | 1 | 后台任务 |
| MEDIUM | 2 | 普通任务 |
| HIGH | 3 | 优先处理 |
| URGENT | 4 | 立即执行 |
# 创建任务
python3 scripts/main.py create
--description "Task description"
--type immediate
--priority high
--params '{"key": "value"}'
# 创建定时任务
python3 scripts/main.py schedule
--description "Daily task"
--cron "0 9 * * *"
--timezone Asia/Shanghai
# 列出任务
python3 scripts/main.py list
--status running
--limit 10
# 获取详情
python3 scripts/main.py get --id
# 更新任务
python3 scripts/main.py update --id --priority urgent
# 取消任务
python3 scripts/main.py cancel --id
# 删除任务
python3 scripts/main.py delete --id
# 启动调度器 python3 scripts/main.py daemon --concurrency 4 --ws-port 8080 --persist-tasks # 状态 python3 scripts/main.py status # 停止 python3 scripts/main.py stop
连接: ws://host:port/ws
// 任务创建
{
"event": "task.created",
"data": {
"id": "task_123",
"description": "...",
"status": "pending",
"priority": "high"
}
}
// 状态更新
{
"event": "task.status_changed",
"data": {
"id": "task_123",
"old_status": "pending",
"new_status": "running",
"timestamp": "2024-01-01T12:00:00Z"
}
}
// 任务完成
{
"event": "task.completed",
"data": {
"id": "task_123",
"result": {...},
"duration_ms": 5000
}
}
# config.yaml scheduler: concurrency: 4 retry_attempts: 3 retry_delay: 5 websocket: host: 0.0.0.0 port: 8080 persistence: enabled: true path: ./tasks.db logging: level: INFO file: ./scheduler.log
task-scheduler/
├── SKILL.md
├── requirements.txt
├── lib/
│ ├── __init__.py
│ ├── scheduler.py # TaskScheduler 核心
│ ├── task.py # Task 类定义
│ ├── queue.py # 任务队列
│ ├── worker.py # 工作进程
│ ├── websocket.py # WebSocket 服务
│ └── persistence.py # 持久化存储
├── scripts/
│ └── main.py # CLI 入口
└── examples/
├── basic_usage.py
└── websocket_client.py
from task_scheduler import TaskScheduler
class MySkill:
def __init__(self):
self.scheduler = TaskScheduler()
def run_long_task(self, description):
task = self.scheduler.create_task(
description=description,
handler=self._process
)
return task.id
def get_task_status(self, task_id):
return self.scheduler.get_task(task_id).status
MIT License - 基于 Bytebot Task System 实现
相关专题
热门下载
相关下载
精品课程
共1课时 | 167人学习
共0课时 | 0人学习
共1课时 | 214人学习