resource_manager.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import logging
  2. from app.core.dependency import ServerContainer
  3. logger = logging.getLogger(__name__)
  4. class AppContext:
  5. def __init__(self, container: ServerContainer):
  6. self.container = container
  7. async def start_up(self):
  8. logger.info("初始化数据库连接池")
  9. mysql = self.container.mysql_manager()
  10. await mysql.init_pools()
  11. logger.info("Mysql pools init successfully")
  12. logger.info("初始化日志服务")
  13. log_service = self.container.log_service()
  14. await log_service.start()
  15. logger.info("aliyun log service init successfully")
  16. async def shutdown(self):
  17. logger.info("取消所有运行中的任务")
  18. registry = self.container.task_registry()
  19. cancelled_count = await registry.cancel_all()
  20. logger.info(f"已取消 {cancelled_count} 个运行中的任务")
  21. logger.info("关闭数据库连接池")
  22. mysql = self.container.mysql_manager()
  23. await mysql.close_pools()
  24. logger.info("应用资源已释放")
  25. logger.info("关闭日志服务")
  26. log_service = self.container.log_service()
  27. await log_service.stop()
  28. logger.info("aliyun log service stopped")
  29. __all__ = [
  30. "AppContext",
  31. ]