main.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import FastAPI, Request #, Response,HTTPException
  4. from fastapi.responses import JSONResponse, RedirectResponse
  5. from fastapi.exceptions import RequestValidationError
  6. from fastapi.middleware.cors import CORSMiddleware
  7. from starlette.staticfiles import StaticFiles
  8. from routers import home, api ,prod_api
  9. from exceptions import *
  10. from pymysql.err import OperationalError
  11. import os
  12. import platform
  13. app = FastAPI()
  14. # app.include_router(home.router)
  15. app.include_router(api.router, prefix="/api")
  16. app.include_router(prod_api.router, prefix="")
  17. app.add_middleware(CORSMiddleware,allow_origins=['*'],allow_credentials=False,allow_methods=['*'],allow_headers=['*'])
  18. app.mount('/static', StaticFiles(directory='static'), name='static')
  19. # @app.exception_handler(RequestValidationError)
  20. # async def validation_exception_handler(request, exc):
  21. # return JSONResponse(status_code=200, content={ "errcode": 100060, "errmsg": "参数错误" }, )
  22. @app.exception_handler(TokenException)
  23. async def exception_handler(request: Request, exc: TokenException):
  24. return JSONResponse(
  25. status_code=200,
  26. content={"errcode": "4001", "errmsg":"验证不通过"}
  27. )
  28. @app.exception_handler(OperationalError)
  29. async def exception_handler(request: Request, exc: OperationalError):
  30. return JSONResponse(
  31. status_code=412,
  32. content={"code": "412", "msg":f"接口对应sql异常,请检查{exc}"}
  33. )
  34. # @app.exception_handler(AttributeError)
  35. # async def exception_handler(request: Request, exc: TokenException):
  36. # return JSONResponse(
  37. # status_code=200,
  38. # content={"errcode": "500", "errmsg":"Internal Server Error"}
  39. # )
  40. @app.exception_handler(AuthException)
  41. async def exception_handler(request: Request, exc: TokenException):
  42. return RedirectResponse("/")
  43. @app.exception_handler(AlertException)
  44. async def exception_handler(request: Request, exc: AlertException):
  45. return JSONResponse(
  46. status_code=200,
  47. content={"ret": 1, "msg": exc.msg}
  48. )
  49. if __name__ == '__main__':
  50. import uvicorn
  51. sys = platform.system()
  52. if sys == "Windows":
  53. os.system("title 茂名应急数据中台 DEV")
  54. # print(1234567890)
  55. uvicorn.run(app='main:app', host='0.0.0.0',port=9988, reload=True, debug=True)
  56. # uvicorn.run(app='main:app', host='0.0.0.0', port=9988)