Добавлено описание проекта PVideoDl, включая функциональность, стек технологий, архитектуру, инструкции по запуску и API. Обновлён README.md для лучшего понимания проекта.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""Абстракция очереди задач.
|
||||
|
||||
Сегодня — обёртка над asyncio.Queue. Завтра можно подменить на Redis/RabbitMQ,
|
||||
не трогая вызовы в сервисах: интерфейс DownloadQueue остаётся прежним.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
|
||||
|
||||
class DownloadQueue:
|
||||
"""Очередь идентификаторов загрузок, ожидающих обработки воркерами."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._queue: asyncio.Queue[str] = asyncio.Queue()
|
||||
|
||||
async def add(self, download_id: str) -> None:
|
||||
await self._queue.put(download_id)
|
||||
|
||||
async def get(self) -> str:
|
||||
return await self._queue.get()
|
||||
|
||||
def task_done(self) -> None:
|
||||
self._queue.task_done()
|
||||
|
||||
async def join(self) -> None:
|
||||
await self._queue.join()
|
||||
|
||||
def qsize(self) -> int:
|
||||
return self._queue.qsize()
|
||||
Reference in New Issue
Block a user