78 lines
1.9 KiB
Python
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
|
|
} |