freqtrade_origin/freqtrade/rpc/api_server/api_background_tasks.py

46 lines
1.3 KiB
Python
Raw Normal View History

import logging
from fastapi import APIRouter
from fastapi.exceptions import HTTPException
from freqtrade.rpc.api_server.api_schemas import (
BackgroundTaskStatus,
)
from freqtrade.rpc.api_server.webserver_bgwork import ApiBG
logger = logging.getLogger(__name__)
# Private API, protected by authentication and webserver_mode dependency
router = APIRouter()
@router.get("/background", response_model=list[BackgroundTaskStatus], tags=["webserver"])
2024-05-12 07:12:53 +00:00
def background_job_list():
2024-05-12 14:51:11 +00:00
return [
{
"job_id": jobid,
"job_category": job["category"],
"status": job["status"],
"running": job["is_running"],
"progress": job.get("progress"),
"error": job.get("error", None),
}
for jobid, job in ApiBG.jobs.items()
]
2024-05-12 07:12:53 +00:00
2024-05-12 14:51:11 +00:00
@router.get("/background/{jobid}", response_model=BackgroundTaskStatus, tags=["webserver"])
def background_job(jobid: str):
if not (job := ApiBG.jobs.get(jobid)):
2024-05-12 14:51:11 +00:00
raise HTTPException(status_code=404, detail="Job not found.")
return {
2024-05-12 14:51:11 +00:00
"job_id": jobid,
"job_category": job["category"],
"status": job["status"],
"running": job["is_running"],
"progress": job.get("progress"),
"error": job.get("error", None),
}