Queue long-running backup and upload

This commit is contained in:
2026-02-07 22:55:34 +03:00
parent 69ace93cac
commit 77801e9123
4 changed files with 37 additions and 12 deletions

View File

@@ -9,6 +9,7 @@ from auth import is_admin_msg
from keyboards import artifacts_kb
from lock_utils import acquire_lock, release_lock
from services.artifacts import artifact_last
from services.queue import enqueue
from services.runner import run_cmd
@@ -40,20 +41,21 @@ async def cmd_artifacts_last(msg: Message):
async def cmd_artifacts_upload(msg: Message):
if not acquire_lock("artifacts"):
await msg.answer("⛔ Upload уже идёт", reply_markup=artifacts_kb)
return
async def job():
if not acquire_lock("artifacts"):
await msg.answer("⚠️ Upload уже идёт", reply_markup=artifacts_kb)
return
await msg.answer("📤 Upload…", reply_markup=artifacts_kb)
await msg.answer("📤 Upload…", reply_markup=artifacts_kb)
async def worker():
try:
rc, out = await run_cmd(["sudo", "/usr/local/bin/backup.py", "artifact-upload"], timeout=12 * 3600)
await msg.answer(("✅ OK\n" if rc == 0 else "❌ FAIL\n") + out, reply_markup=artifacts_kb)
finally:
release_lock("artifacts")
asyncio.create_task(worker())
pos = await enqueue(job)
await msg.answer(f"🕓 Upload queued (#{pos})", reply_markup=artifacts_kb)
@dp.message(F.text == "🧉 Status")