agent
已于 2025年01月26日 21:52 修改
访问次数:14
1. API 设计概览
- 调试/立即执行/一次性执行任务,调用 RPC 接口
- 周期执行并永久保存的代码,存储到指定文件夹中
- 任务信息,包括任务主体、执行周期和回显方式
以下是 API 的设计和相关 JSON 配置示例:
1.1 创建/更新任务
POST /api/v1/task
创建或更新一个任务,包含代码、执行周期、回显方式等信息。
请求参数 (JSON)
{
"task_id": "string", // 任务的唯一标识符 (可选,更新任务时必填)
"task_name": "string", // 任务名称
"code": "string", // 任务代码,支持多行
"schedule": "string", // 执行周期,例如:"0 0 * * *" (cron 表达式) 或 "immediate" (立即执行)
"echo_mode": "string", // 回显方式,可选值: "tcp", "webhook"
"echo_target": "string", // 回显目标 (对于 "tcp" 是地址,"webhook" 是 URL)
"task_type": "string", // 任务类型,可选值: "immediate" (立即执行), "periodic" (周期性执行)
"file_path": "string" // 存储任务代码的文件路径 (对于周期性任务使用)
}
响应 (JSON)
{
"status": "string", // 请求处理状态,"success" 或 "error"
"message": "string", // 处理结果消息
"task_id": "string" // 新任务或更新任务的唯一标识符
}
1.2 执行任务
POST /api/v1/task/execute
立即执行一个任务,传入任务的 task_id,支持一次性执行的任务。
请求参数 (JSON)
{
"task_id": "string" // 要执行的任务 ID
}
响应 (JSON)
{
"status": "string", // 请求处理状态,"success" 或 "error"
"message": "string", // 执行结果消息
"result": "string" // 执行回显结果 (如果有)
}
1.3 获取任务信息
GET /api/v1/task/{task_id}
获取任务的详细信息。
请求参数 (无)
响应 (JSON)
{
"task_id": "string",
"task_name": "string",
"code": "string",
"schedule": "string",
"echo_mode": "string",
"echo_target": "string",
"task_type": "string",
"file_path": "string",
"last_execution": "string", // 最后一次执行时间
"next_execution": "string" // 下次执行时间
}
1.4 删除任务
DELETE /api/v1/task/{task_id}
删除一个任务。
请求参数 (无)
响应 (JSON)
{
"status": "string", // 请求处理状态,"success" 或 "error"
"message": "string" // 处理结果消息
}
2. JSON 配置示例
2.1 创建一个周期性任务
例如,创建一个每小时执行一次的任务,并通过 Webhook 回显结果:
{
"task_name": "Hourly Task",
"code": "console.log('Hello, world!');",
"schedule": "0 * * * *", // 每小时执行一次
"echo_mode": "webhook", // 使用 webhook 回显
"echo_target": "https://example.com/webhook", // 回显的目标 URL
"task_type": "periodic", // 周期性任务
"file_path": "/path/to/save/task/code.js" // 存储任务代码的路径
}
2.2 创建一个立即执行的任务
例如,创建一个立即执行并通过 TCP 回显的任务:
{
"task_name": "Immediate Task",
"code": "console.log('Task executed immediately!');",
"schedule": "immediate", // 立即执行
"echo_mode": "tcp", // 使用 TCP 回显
"echo_target": "tcp://localhost:8080", // 回显的 TCP 地址
"task_type": "immediate", // 立即执行任务
"file_path": "" // 不需要存储文件路径
}
3. 设计考虑与说明
- 任务唯一标识符 (task_id): task_id 是任务的唯一标识符,创建任务时可以由系统自动生成。更新任务时,必须传入 task_id。
- 执行周期 (schedule): 支持 cron 表达式来定义周期性任务。例如,"0 * * * *" 表示每小时执行一次。 "immediate" 表示立即执行一次任务。
- 回显方式 (echo_mode): 支持 tcp 和 webhook 两种回显方式。 对于 tcp,需要提供回显的目标 TCP 地址。 对于 webhook,需要提供回显的 URL。
- 任务存储 (file_path): 对于周期性任务,可以指定存储任务代码的文件路径。任务代码会被存储在该路径下,以便定期执行。
- 任务类型 (task_type): 支持 "immediate"(立即执行)和 "periodic"(周期性执行)任务。
通过这种方式,你可以灵活管理任务,执行周期任务并回显执行结果,同时也可以调试并立即执行任务。
二、scheduler
周期任务和一次性任务的调度
三、worker
接受scheduler的需求,具体执行任务
四、notify
根据api、配置文件中的配置,对结果进行推送,直接通过长连接或者push到配置的webhook;
评论(0)