Добавил очередь

This commit is contained in:
Viner Abubakirov
2026-02-22 22:38:01 +05:00
parent 51ec17381f
commit a5c608674b
10 changed files with 277 additions and 9 deletions

View 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

View File

@@ -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)