__init__.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python
  2. """
  3. @Contact : liuyuqi.gov@msn.cn
  4. @Time : 2024/03/19 16:50:59
  5. @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved.
  6. @Desc :
  7. """
  8. from apps.config import settings
  9. from apps.extensions.hook import (init_banner, init_middlewares, register_db,
  10. register_exception_handlers, register_routes)
  11. from fastapi import FastAPI
  12. from fastapi.routing import APIRoute
  13. from fastapi.staticfiles import StaticFiles
  14. from apps.websocket import socket_app
  15. def custom_generate_unique_id(route: APIRoute) -> str:
  16. return f"{route.tags[0]}-{route.name}"
  17. def create_app(config_name="dev") -> FastAPI:
  18. """
  19. return FastAPI instance
  20. """
  21. fastapp = FastAPI(
  22. title=settings.PROJECT_NAME,
  23. description=settings.PROJECT_NAME,
  24. # version= settings.API_VERSION,
  25. openapi_url=f"{settings.API_V1_STR}/openapi.json",
  26. docs_url="/docs",
  27. redoc_url="/redoc",
  28. generate_unique_id_function=custom_generate_unique_id,
  29. )
  30. init_banner()
  31. init_middlewares(app=fastapp)
  32. register_db(app=fastapp)
  33. register_exception_handlers(app=fastapp)
  34. register_routes(app=fastapp)
  35. fastapp.mount("/static", StaticFiles(directory="./static"), name="static")
  36. fastapp.mount('/', socket_app)
  37. return fastapp