app.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import logging
  2. from quart import Quart
  3. from quart_cors import cors
  4. from src.core.bootstrap import AppContext, setup_logging
  5. from src.core.dependency import ServerContainer
  6. from src.core.api.v1.routes import server_routes
  7. from src.core.api.v1.middleware import register_error_handlers
  8. setup_logging()
  9. logger = logging.getLogger(__name__)
  10. app = Quart(__name__)
  11. app = cors(app, allow_origin="*")
  12. register_error_handlers(app)
  13. server_container = ServerContainer()
  14. ctx = AppContext(server_container)
  15. config = server_container.config()
  16. log_service = server_container.log_service()
  17. mysql_pool = server_container.mysql_pool()
  18. routes = server_routes(mysql_pool, log_service, config)
  19. app.register_blueprint(routes)
  20. @app.before_serving
  21. async def startup():
  22. logger.info("Starting application...")
  23. await ctx.start_up()
  24. logger.info("Application started successfully")
  25. @app.after_serving
  26. async def shutdown():
  27. logger.info("Shutting down application...")
  28. await ctx.shutdown()
  29. logger.info("Application shutdown successfully")