task_app.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import asyncio
  2. import logging
  3. from quart import Quart
  4. from aiomonitor import start_monitor
  5. from applications.config import aliyun_log_config
  6. from applications.database import mysql_manager
  7. from applications.service import LogService
  8. from routes import server_routes
  9. log_service = LogService(**aliyun_log_config)
  10. app = Quart(__name__)
  11. routes = server_routes(mysql_manager, log_service)
  12. app.register_blueprint(routes)
  13. logging.basicConfig(level=logging.INFO)
  14. _monitor = None
  15. @app.before_serving
  16. async def startup():
  17. global _monitor
  18. loop = asyncio.get_event_loop()
  19. _monitor = start_monitor(loop=loop, host="127.0.0.1", port=50101)
  20. logging.info(f"Monitor started at {_monitor}")
  21. logging.info("Starting application...")
  22. await mysql_manager.init_pools()
  23. logging.info("Mysql pools init successfully")
  24. await log_service.start()
  25. logging.info("aliyun log service init successfully")
  26. @app.after_serving
  27. async def shutdown():
  28. logging.info("Shutting down application...")
  29. await mysql_manager.close_pools()
  30. logging.info("Mysql pools close successfully")
  31. await log_service.stop()
  32. logging.info("aliyun log service stop successfully")
  33. if _monitor:
  34. _monitor.close()
  35. logging.info("Monitor stopped successfully")