Vastai-ConnectHub/app/admin/routes.py

38 lines
1.1 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, HTTPException, Request
from starlette.responses import RedirectResponse
from app.db import crud
from app.db.engine import get_session
from app.tasks.execute import execute_job
router = APIRouter()
@router.post("/admin/joblogs/{log_id}/retry")
def retry_joblog(request: Request, log_id: int):
session = get_session()
try:
log = crud.get_job_log(session, log_id)
if not log:
raise HTTPException(status_code=404, detail="JobLog not found")
# 关键:用 snapshot_params 重新触发任务(其中 secret_cfg 仍为密文)
execute_job.delay(snapshot_params=log.snapshot_params)
finally:
session.close()
referer = request.headers.get("Referer") or "/admin"
return RedirectResponse(referer, status_code=303)
@router.post("/admin/jobs/{job_id}/run")
def run_job(request: Request, job_id: str):
# 触发一次立即执行
execute_job.delay(job_id=job_id)
referer = request.headers.get("Referer") or "/admin"
return RedirectResponse(referer, status_code=303)