Files
lotteryServer/api/scheduler_api.py
2026-09-07 13:24:09 +08:00

78 lines
1.9 KiB
Python

from fastapi import APIRouter, HTTPException
from typing import Any, Dict
from core.task.dlt_scheduler import scheduler
# 彩票相关的路由
scheduler_router = APIRouter(prefix="/scheduler", tags=["大乐透调度器管理"])
@scheduler_router.get("/status")
async def get_scheduler_status() -> Dict[str, Any]:
"""获取调度器状态"""
lists = []
for job in scheduler.get_jobs():
lists.append({
"id": job.id,
"name": job.name,
"next_run_time": job.next_run_time
})
return {
"running": scheduler.scheduler.running,
"jobs": lists
}
@scheduler_router.post("/run")
async def run_job_now() -> Dict[str, Any]:
"""立即执行定时任务"""
try:
success, message = await scheduler.run_job_now()
return {
"success": success,
"message": message
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@scheduler_router.post("/pause")
async def pause_scheduler() -> Dict[str, Any]:
"""暂停调度器"""
if scheduler.pause():
return {
"success": True,
"message": "调度器已停止"
}
return {
"success": False,
"message": "调度器停止失败"
}
@scheduler_router.post("/resume")
async def resume_scheduler() -> Dict[str, Any]:
"""暂停调度器"""
if scheduler.resume():
return {
"success": True,
"message": "调度器已恢复运行"
}
return {
"success": False,
"message": "调度器恢复运行失败"
}
@scheduler_router.get("/jobs")
async def list_jobs() -> Dict[str, Any]:
"""列出所有定时任务"""
lists = []
for job in scheduler.get_jobs():
lists.append({
"id": job.id,
"name": job.name,
"next_run_time": job.next_run_time
})
return {
"jobs": lists
}