版本: 1.2.0 更新日期: 2026-04-28
基础 URL: http://<host>:9870/api
获取后端当前的完整配置字典。
响应示例:
{"status": "success", "config": {"monitor": {...}, "webhook": {...}, ...}}实时应用传入的配置(写入 default.yaml)。
请求体:
{"config": {"monitor": {...}, "webhook": {...}, ...}}列出 configs/ 目录下所有 .yaml 文件名。
响应示例:
["default.yaml", "my_project.yaml"]将配置持久化到指定文件。
请求体:
{"name": "config_name", "config": {"monitor": {...}, ...}}从指定文件加载配置并返回。
响应示例:
{"status": "success", "config": {...}}删除指定配置文件(default.yaml 除外)。
启动监控后台任务。
响应示例:
{"status": "success", "message": "监控已启动"}停止当前的监控任务。
获取当前监控器的运行状态。
响应示例:
{"status": "running", "running": true}跳过检测流程,直接向所有已启用的通知渠道发送通知。适用于 Web UI 手动触发或外部系统集成。
Web UI 和 CLI 模式使用统一路径
/api/trigger,请求体和认证方式完全相同。 Web UI 模式下随服务自动可用;CLI 模式需在配置中启用check_api_enabled。
请求头(可选):
Authorization: Bearer <token>
仅当配置了
monitor.check_api_auth_token时需要。
请求体(可选):
{
"message": "自定义消息内容",
"project_name": "项目名称"
}message— 触发详情,默认"Web UI 手动触发通知"project_name— 覆盖配置中的项目名称
响应示例:
{
"status": "success",
"message": "通知已触发",
"results": {
"webhook": true,
"email": true,
"wecom": true,
"generic_webhook": true
}
}curl 示例:
# 触发通知
curl -X POST http://localhost:9870/api/trigger \
-H "Content-Type: application/json" \
-d '{"message": "手动测试"}'
# 带认证
curl -X POST http://localhost:9870/api/trigger \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_token" \
-d '{"message": "手动测试", "project_name": "MyProject"}'用于前端实时获取监控日志和状态变更。
- Endpoint:
ws://<host>:9870/ws - 消息格式: JSON
| 类型 | 示例 | 场景 |
|---|---|---|
log |
{"type": "log", "message": "..."} |
监控进度/检测日志 |
status |
{"type": "status", "data": {"status": "running"}} |
任务起止状态同步 |
ping |
{"type": "ping"} |
心跳保活 |
当配置中启用 check_api_enabled 后,CLI 模式(main.py)会在指定端口启动轻量 HTTP 服务,接收外部请求直接触发通知。
- 默认端口:
9870(配置项check_api_port) - 路径与 Web UI 完全一致:
/api/trigger、/api/health
请求格式与 1.3 手动触发通知 完全相同。
响应:
{"status": "ok", "message": "通知已触发"}错误响应:
| 状态码 | 含义 |
|---|---|
| 401 | Token 认证失败 |
| 404 | 路径不存在 |
| 500 | 回调执行异常 |
响应:
{"status": "ok"}curl 示例:
# 触发通知(CLI 和 Web UI 路径相同)
curl -X POST http://localhost:9870/api/trigger \
-H "Content-Type: application/json" \
-d '{"message": "训练完成"}'
# 健康检查
curl http://localhost:9870/api/health如果你希望将 TaskNya 作为库集成到自己的脚本中,可以调用以下核心类。
监控逻辑的聚合者,负责按需调用各监控器并返回检测结果。
from core.monitor import MonitorManager
manager = MonitorManager(config['monitor'])
triggered, method, detail = manager.check()内置监控器:
| 监控器 | 配置前缀 | 说明 |
|---|---|---|
FileMonitor |
check_file_* |
单文件存在/删除检测 |
LogMonitor |
check_log_* |
日志关键词检测(全量/增量) |
GpuMonitor |
check_gpu_power_* |
GPU 功耗阈值检测 |
DirectoryMonitor |
check_directory_* |
目录文件变化检测 |
HttpMonitor |
check_http_* |
HTTP 轮询检测 |
CLI 模式下的被动触发 HTTP 服务。
from core.monitor.api_trigger import ApiTriggerServer
server = ApiTriggerServer(
port=9870,
auth_token="optional_token",
trigger_callback=lambda body: print(body),
)
server.start()
# ... 后续逻辑 ...
server.stop()配置系统门面,支持加载、保存、合并与校验。
from core.config import ConfigManager, DEFAULT_CONFIG
manager = ConfigManager(config_dir="./configs")
config = manager.load_config()
full_config = manager.merge_config(user_data, DEFAULT_CONFIG)所有通知器继承相同接口,通过 .send(training_info) 发送通知。
from core.notifier import WebhookNotifier, EmailNotifier, WeComNotifier, GenericWebhookNotifier
notifier = WebhookNotifier(config['webhook'])
if notifier.enabled:
success = notifier.send(training_info)| 通知器 | 配置节 | 说明 |
|---|---|---|
WebhookNotifier |
webhook |
飞书机器人(Interactive 卡片/Text) |
EmailNotifier |
email |
SMTP 邮件通知 |
WeComNotifier |
wecom |
企业微信群机器人 |
GenericWebhookNotifier |
generic_webhook |
通用 HTTP Webhook |
所有 Web REST API 均返回标准 JSON 结构:
- 成功:
{"status": "success", ...} - 失败:
{"status": "error", "message": "Reason"}
HTTP 状态码:
| 状态码 | 含义 |
|---|---|
| 200 | 操作成功 |
| 400 | 请求参数错误 |
| 401 | 认证失败 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
更多底层细节请参考代码中的 Docstrings。