__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. def custom_generate_unique_id(route: APIRoute) -> str:
  15. return f"{route.tags[0]}-{route.name}"
  16. def create_app(config_name="dev") -> FastAPI:
  17. """
  18. return FastAPI instance
  19. """
  20. fastapp = FastAPI(
  21. title=settings.PROJECT_NAME,
  22. description=settings.PROJECT_NAME,
  23. # version= settings.API_VERSION,
  24. openapi_url=f"{settings.API_V1_STR}/openapi.json",
  25. docs_url="/docs",
  26. redoc_url="/redoc",
  27. generate_unique_id_function=custom_generate_unique_id,
  28. )
  29. init_banner()
  30. init_middlewares(app=fastapp)
  31. register_db(app=fastapp)
  32. register_exception_handlers(app=fastapp)
  33. register_routes(app=fastapp)
  34. fastapp.mount("/static", StaticFiles(directory="./static"), name="static")
  35. fastapp.mount('/', socket_app)
  36. return fastapp