fix delete old state
This commit is contained in:
@@ -42,7 +42,8 @@ class BotApplication:
|
||||
def __init__(self):
|
||||
self.bot: Bot = None
|
||||
self.dispatcher: Dispatcher = None
|
||||
|
||||
self._initialized = False # True только после успешного _restore_tasks
|
||||
|
||||
self.background_tasks = BackgroundTaskManager()
|
||||
self.browser_service = BrowserService()
|
||||
self.browser_pool = BrowserPool(settings.BROWSER_POOL_SIZE, self.browser_service)
|
||||
@@ -101,8 +102,24 @@ class BotApplication:
|
||||
# Восстанавливаем задачи
|
||||
await self._restore_tasks()
|
||||
|
||||
self._initialized = True
|
||||
|
||||
# Периодическое сохранение на случай аварийного завершения
|
||||
asyncio.create_task(self._autosave_loop(), name="autosave")
|
||||
|
||||
logger.info("Bot initialized!")
|
||||
|
||||
async def _autosave_loop(self):
|
||||
"""Сохраняет состояние задач каждые 60 секунд."""
|
||||
while True:
|
||||
await asyncio.sleep(60)
|
||||
try:
|
||||
tasks = dict(self.interface.task_manager._tasks)
|
||||
await self.storage.save_tasks(tasks)
|
||||
logger.debug(f"Autosaved {len(tasks)} tasks")
|
||||
except Exception as e:
|
||||
logger.warning(f"Autosave failed: {e}")
|
||||
|
||||
async def _restore_tasks(self):
|
||||
"""Восстанавливает задачи после перезапуска."""
|
||||
saved_tasks = await self.storage.load_tasks()
|
||||
@@ -173,10 +190,12 @@ class BotApplication:
|
||||
async def stop(self):
|
||||
"""Остановка с сохранением."""
|
||||
logger.info("Shutting down...")
|
||||
|
||||
# Сохраняем задачи
|
||||
tasks = self.interface.task_manager._tasks
|
||||
await self.storage.save_tasks(tasks)
|
||||
|
||||
# Сохраняем только если инициализация прошла успешно —
|
||||
# иначе task_manager пустой и мы затрём уже сохранённые задачи
|
||||
if self._initialized:
|
||||
tasks = self.interface.task_manager._tasks
|
||||
await self.storage.save_tasks(tasks)
|
||||
|
||||
await self.background_tasks.cancel_all()
|
||||
await self.browser_pool.stop()
|
||||
|
||||
Reference in New Issue
Block a user