增加全局未处理异常的处理
This commit is contained in:
39
main.py
39
main.py
@@ -1,25 +1,49 @@
|
|||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
import os
|
||||||
|
import traceback
|
||||||
import signal
|
import signal
|
||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
from fastapi import FastAPI
|
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
|
||||||
from contextlib import asynccontextmanager
|
|
||||||
from sqlalchemy import text
|
|
||||||
import redis.asyncio as redis
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import os
|
|
||||||
|
|
||||||
from app.config import settings
|
from app.config import settings
|
||||||
from app.database import engine
|
from app.database import engine
|
||||||
from app.routes import router
|
from app.routes import router
|
||||||
from app.logger import LoggerManager, get_main_logger
|
from app.logger import LoggerManager, get_main_logger
|
||||||
|
from contextlib import asynccontextmanager
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
import redis.asyncio as redis
|
||||||
|
from sqlalchemy import text
|
||||||
|
|
||||||
|
|
||||||
# 初始化日志系统
|
# 初始化日志系统
|
||||||
LoggerManager.setup_logging()
|
LoggerManager.setup_logging()
|
||||||
logger = get_main_logger()
|
logger = get_main_logger()
|
||||||
|
|
||||||
|
def global_exception_handler(exc_type, exc_value, exc_traceback):
|
||||||
|
if issubclass(exc_type, KeyboardInterrupt):
|
||||||
|
sys.__excepthook__(exc_type, exc_value, exc_traceback)
|
||||||
|
return
|
||||||
|
|
||||||
|
# 获取格式化的异常信息
|
||||||
|
error_msg = "捕获到未处理的异常:\n"
|
||||||
|
error_msg += f"异常类型: {exc_type.__name__}\n"
|
||||||
|
error_msg += f"异常信息: {exc_value}\n"
|
||||||
|
error_msg += "堆栈跟踪:\n"
|
||||||
|
error_msg += ''.join(traceback.format_tb(exc_traceback))
|
||||||
|
error_msg += f"异常时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n"
|
||||||
|
error_msg += "-" * 50 + "\n"
|
||||||
|
|
||||||
|
# 输出到控制台
|
||||||
|
print(error_msg)
|
||||||
|
|
||||||
|
# 输出到文件
|
||||||
|
logger.error(error_msg)
|
||||||
|
|
||||||
|
# 注册全局异常处理器
|
||||||
|
sys.excepthook = global_exception_handler
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def lifespan(app: FastAPI):
|
||||||
@@ -270,5 +294,6 @@ def start_all_services():
|
|||||||
signal_handler(signal.SIGINT, None)
|
signal_handler(signal.SIGINT, None)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
1 / 0
|
||||||
# 直接启动所有服务
|
# 直接启动所有服务
|
||||||
start_all_services()
|
start_all_services()
|
||||||
|
|||||||
Reference in New Issue
Block a user