upd
This commit is contained in:
17
src/api.py
17
src/api.py
@@ -154,13 +154,14 @@ async def _queue_worker_loop():
|
||||
_db = StateDB()
|
||||
try:
|
||||
current_status = _db.get_manga(url)
|
||||
# Если статус уже "queued" — значит нас приоритизировали и поставили обратно
|
||||
# в очередь; не перетираем на "stopped"
|
||||
if current_status and current_status["status"] != "queued":
|
||||
if current_status and current_status["status"] == "queued":
|
||||
# Нас приоритизировали и поставили обратно в очередь — уведомляем
|
||||
await ws_manager.broadcast({"type": "manga_queued", "url": url, "format": fmt})
|
||||
elif current_status and current_status["status"] != "stopped":
|
||||
# Статус ещё не "stopped" (например отменили не через /stop, а внутренне)
|
||||
_db.update_manga_status(url, "stopped")
|
||||
await ws_manager.broadcast({"type": "manga_stopped", "url": url})
|
||||
else:
|
||||
await ws_manager.broadcast({"type": "manga_queued", "url": url, "format": fmt})
|
||||
# Если статус уже "stopped" — API-эндпоинт уже всё сделал, ничего не дублируем
|
||||
finally:
|
||||
_db.close()
|
||||
except Exception as e:
|
||||
@@ -988,7 +989,11 @@ async def stop_manga(url: str):
|
||||
task = active_tasks.get(url)
|
||||
if task and not task.done():
|
||||
task.cancel()
|
||||
# Статус обновит воркер после CancelledError
|
||||
# Сразу обновляем статус и уведомляем клиентов — не ждём пока воркер
|
||||
# обработает CancelledError (это может занять секунды пока браузер завершит операцию)
|
||||
db.update_manga_status(url, "stopped")
|
||||
await ws_manager.broadcast({"type": "manga_stopped", "url": url})
|
||||
await _broadcast_queue_positions()
|
||||
else:
|
||||
# Манга в очереди (ещё не начата) — просто помечаем как stopped
|
||||
db.update_manga_status(url, "stopped")
|
||||
|
||||
Reference in New Issue
Block a user