Files
planManage/app/routers/queue.py
congsh 37d282c0a2 test: 添加测试框架和全面的单元测试
- 添加 pytest 配置和测试依赖到 requirements.txt
- 创建测试包结构和 fixtures (conftest.py)
- 添加数据库模块的 CRUD 操作测试 (test_database.py)
- 添加 Provider 插件系统测试 (test_providers.py)
- 添加调度器模块测试 (test_scheduler.py)
- 添加 API 路由测试 (test_api.py)
- 添加回归测试覆盖边界条件和错误处理 (test_regressions.py)
- 添加健康检查端点用于容器监控
- 修复调度器中的日历计算逻辑和任务执行参数处理
- 更新数据库函数以返回操作结果状态
2026-03-31 22:36:18 +08:00

42 lines
1.1 KiB
Python

"""任务队列 API"""
from fastapi import APIRouter, HTTPException
from app import database as db
from app.models import TaskCreate, TaskOut
router = APIRouter()
@router.get("", response_model=list[TaskOut])
async def list_tasks(status: str | None = None, limit: int = 50):
return await db.list_tasks(status=status, limit=limit)
@router.post("", response_model=dict)
async def create_task(body: TaskCreate):
return await db.create_task(
task_type=body.task_type,
request_payload=body.request_payload,
plan_id=body.plan_id,
priority=body.priority,
max_retries=body.max_retries,
callback_url=body.callback_url,
)
@router.get("/{task_id}", response_model=TaskOut)
async def get_task(task_id: str):
t = await db.get_task(task_id)
if not t:
raise HTTPException(404, "Task not found")
return t
@router.post("/{task_id}/cancel")
async def cancel_task(task_id: str):
ok = await db.update_task(task_id, status="cancelled")
if not ok:
raise HTTPException(404, "Task not found")
return {"ok": True}