main_9000.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. import time
  3. from threading import Thread
  4. from fastapi import FastAPI, Request
  5. from fastapi.responses import PlainTextResponse
  6. from typing import Callable
  7. from core.api_get_article import router as r1
  8. from core.api_get_audio import router as r2
  9. from core.api_get_article2 import router as r3
  10. from core.api_get_word import router as r4
  11. from core.api_get_spoken_language import router as r5
  12. from core.api_get_article3 import router as r6
  13. from tools.loglog import logger
  14. from tools.del_expire_file import run_del_normal
  15. from core.respone_format import *
  16. app = FastAPI(title="AI相关功能接口", version="1.1")
  17. app.include_router(r2, tags=["用户管理"])
  18. app.include_router(r1, tags=["青提文章管理"])
  19. app.include_router(r2, tags=["音频管理"])
  20. app.include_router(r3, tags=["春笋文章管理"])
  21. app.include_router(r4, tags=["生成word文档"])
  22. app.include_router(r5, tags=["口语评测"])
  23. app.include_router(r6, tags=["deepseek文章"])
  24. @app.middleware("http")
  25. async def add_process_time_header(request: Request, call_next: Callable):
  26. start_time = time.time()
  27. real_ip = request.headers.get("X-Real-IP")
  28. params = request.query_params
  29. path = request.url.path
  30. try:
  31. body = await request.json() if request.method in ["POST", "PUT", "PATCH"] else ""
  32. except:
  33. body = ""
  34. logger.info(f"\n测试接口请求:{real_ip} {request.method} {path}\n查询参数:{params}\n携带参数:{body}")
  35. try:
  36. response = await call_next(request)
  37. except Exception as e:
  38. logger.error(f"{type(e).__name__},{e}")
  39. return resp_500(message=f"{type(e).__name__},{e}")
  40. process_time = str(round(time.time() - start_time, 2))
  41. response.headers["X-Process-Time"] = process_time
  42. if path not in ['/', '/tts']:
  43. with open('log/time_log.txt', encoding='utf-8', mode='a') as f:
  44. t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  45. f.write(f"{t} 路径:{path} - 用时:{process_time}\n")
  46. return response
  47. @app.get("/")
  48. @app.post("/")
  49. def hello():
  50. return PlainTextResponse("hello world")
  51. del_file_thread = Thread(target=run_del_normal, daemon=True)
  52. del_file_thread.start()
  53. if __name__ == "__main__":
  54. import uvicorn
  55. uvicorn.run("main_9000:app", port=9000)