Queue long-running backup and upload
This commit is contained in:
@@ -7,6 +7,7 @@ from app import dp
|
||||
from auth import is_admin_msg
|
||||
from keyboards import backup_kb
|
||||
from lock_utils import acquire_lock, release_lock
|
||||
from services.queue import enqueue
|
||||
from services.backup import backup_badge, restore_help
|
||||
from services.runner import run_cmd
|
||||
|
||||
@@ -108,20 +109,21 @@ async def cmd_backup_status(msg: Message):
|
||||
|
||||
|
||||
async def cmd_backup_now(msg: Message):
|
||||
if not acquire_lock("backup"):
|
||||
await msg.answer("⚠️ Backup уже выполняется", reply_markup=backup_kb)
|
||||
return
|
||||
async def job():
|
||||
if not acquire_lock("backup"):
|
||||
await msg.answer("⚠️ Backup уже выполняется", reply_markup=backup_kb)
|
||||
return
|
||||
|
||||
await msg.answer("▶️ Backup запущен", reply_markup=backup_kb)
|
||||
await msg.answer("▶️ Backup запущен", reply_markup=backup_kb)
|
||||
|
||||
async def worker():
|
||||
try:
|
||||
rc, out = await run_cmd(["sudo", "/usr/local/bin/backup.py", "restic-backup"], timeout=6 * 3600)
|
||||
await msg.answer(("✅ OK\n" if rc == 0 else "❌ FAIL\n") + out, reply_markup=backup_kb)
|
||||
finally:
|
||||
release_lock("backup")
|
||||
|
||||
asyncio.create_task(worker())
|
||||
pos = await enqueue(job)
|
||||
await msg.answer(f"🕓 Backup queued (#{pos})", reply_markup=backup_kb)
|
||||
|
||||
|
||||
async def cmd_last_snapshot(msg: Message):
|
||||
|
||||
Reference in New Issue
Block a user