Добавил очередь
This commit is contained in:
25
app/api/v1/endpoints/tasks.py
Normal file
25
app/api/v1/endpoints/tasks.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from fastapi import APIRouter
|
||||
from fastapi import HTTPException
|
||||
from celery.result import AsyncResult
|
||||
|
||||
from app.core.celery import celery_app
|
||||
from app.schemas import TaskStatusResponse
|
||||
from app.schemas import DownloadResponse
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/status/{task_id}", response_model=TaskStatusResponse)
|
||||
def get_task_status(task_id: str):
|
||||
result = AsyncResult(task_id, app=celery_app)
|
||||
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
|
||||
response = TaskStatusResponse(
|
||||
task_id=task_id,
|
||||
status=result.status,
|
||||
result=DownloadResponse(**result.result) if result.successful() else None,
|
||||
)
|
||||
return response
|
||||
@@ -1,12 +1,12 @@
|
||||
from fastapi import APIRouter
|
||||
from app.services import YouTubeService
|
||||
from app.schemas import DownloadResponse
|
||||
from app.schemas import TaskCreateResponse
|
||||
from app.schemas import DownloadRequest
|
||||
from app.tasks import download_youtube
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/", response_model=DownloadResponse)
|
||||
@router.post("/", response_model=TaskCreateResponse)
|
||||
async def download_video(data: DownloadRequest):
|
||||
response_data = YouTubeService.download(data)
|
||||
return response_data
|
||||
task = download_youtube.delay(data.url, data.quality)
|
||||
return TaskCreateResponse(task_id=task.id, status=task.status)
|
||||
|
||||
Reference in New Issue
Block a user