增加全局未处理异常的处理
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 tempfile
|
||||
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 sys
|
||||
import os
|
||||
|
||||
from app.config import settings
|
||||
from app.database import engine
|
||||
from app.routes import router
|
||||
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()
|
||||
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
|
||||
async def lifespan(app: FastAPI):
|
||||
@@ -270,5 +294,6 @@ def start_all_services():
|
||||
signal_handler(signal.SIGINT, None)
|
||||
|
||||
if __name__ == "__main__":
|
||||
1 / 0
|
||||
# 直接启动所有服务
|
||||
start_all_services()
|
||||
|
||||
Reference in New Issue
Block a user