首页 > 其他分享 >统一异常处理

统一异常处理

时间:2024-04-18 09:57:47浏览次数:24  
标签:get 处理 异常 str res msg view data 统一

from rest_framework.views import exception_handler
from rest_framework.response import Response
from utils.common_logger import logger


#### 加入日志记录,只要走到这,说明程序出error了,程序的error,咱们都要记录日志,方便后期排查
### 日志记录尽量详细:ip;如果用户登录了,记录用户;请求地址是;执行那个视图类出的错
def common_exception_handler(exc, context):
    request = context.get('request')
    view = context.get('view')
    ip = request.META.get('REMOTE_ADDR')
    try:
        user_id = request.user.pk
    except:
        user_id = '【未登录用户】'
    path = request.get_full_path()
    view_str = str(view)
    res = exception_handler(exc, context)#看看是否drf的异常
    logger.error('用户地址为:%s,用户id号为:%s,请求地址为:%s,执行的视图函数为:%s,错误是什么:%s' % (ip, user_id, path, view_str, str(exc)))

    if res:#drf的异常有两种返回方式,1.字典,2。列表
        # drf的异常,一种是从res.data这个字典的detail中取,一种是  直接取data
        if isinstance(res.data, dict):
            msg = res.data.get('detail', None)
            if not msg:
                msg = res.data
            data = {'code': 999, 'msg': msg}
        else:
            data = {'code': 998, 'msg': res.data}

    else:
        # django的异常
        data = {'code': 888, 'msg': str(exc)}
    return Response(data)

标签:get,处理,异常,str,res,msg,view,data,统一
From: https://www.cnblogs.com/dreammooncy/p/18142860

相关文章

  • 构建RAG应用-day01: 词向量和向量数据库 文档预处理
    词向量和向量数据库词向量(Embeddings)是一种将非结构化数据,如单词、句子或者整个文档,转化为实数向量的技术。词向量搜索和关键词搜索的比较优势1:词向量可以语义搜索比如百度搜索,使用的是关键词搜索。而词向量搜索,是对句子的语义进行搜索,他会找到意思相近的前k个句子。优势2:词......
  • ETL工具-nifi干货系列 第十四讲 nifi处理器QueryDatabaseTableRecord查询表数据实战教
    1、处理器QueryDatabaseTableRecord和处理器QueryDatabaseTable比较相似,该组件生成一个SQL查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。QueryDatabaseTable的查询结果将被转换为Avro,而QueryDatabaseTableRecord的查询结果则被......
  • openGauss Slow-Query-Diagnosis-慢SQL根因分析常见问题处理
    常见问题处理如果用户对没有执行过的慢SQL执行交互式诊断命令,则无法给出诊断结果。exporter指标采集功能没有启动时运行慢SQL诊断功能,此时功能无法正常运行。配置文件中的参数重新设置后,需要重新启动服务进程才能生效。使用慢SQL的交互诊断功能时,工具基于RPC和数据采集服务获......
  • openGauss Prometheus-Exporter组件常见问题处理
    常见问题处理提示需要用户提供--ssl-keyfile与--ssl-certfile选项:上述exporter默认采用Https模式通信,因此需要用户指定证书及其私钥文件的路径。相反,如果用户只想采用Http模式,则需要显性给定--disable-https选项,从而禁用Https协议。提示用户需要输入PEM密码(EnterPEMpass......
  • openGauss X-Tuner-参数调优与诊断常见问题处理
    常见问题处理数据库实例连接失败:请检查数据库实例的情况,是否数据库实例出现了问题或安全权限配置(pg_hba.conf文件中的配置项)不正确。重启失败:请检查数据库实例健康情况,确保数据库实例工作正常。跑TPC-C作业时发现性能越来越慢:TPC-C等高并发场景下的压力测试,往往伴随着大量的数......
  • NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据|附代码数据
    全文链接:http://tecdat.cn/?p=2155最近我们被客户要求撰写关于NLP自然语言处理的研究报告,包括一些图形和统计输出。随着网民规模的不断扩大,互联网不仅是传统媒体和生活方式的补充,也是民意凸显的地带。领导干部参与网络问政的制度化正在成为一种发展趋势,这种趋势与互联网发展的时......
  • NLP自然语言处理—主题模型LDA回归可视化案例:挖掘智能门锁电商评价数据
    全文链接:http://tecdat.cn/?p=2175早在1995年比尔·盖茨就在《未来之路》里说过:未来没有配套智能家居的房子,就是毛坯房。现在人们生活越来越便捷,人们也更加倾向于智能化家居,当你还在纠结“人工智能”安利值不值得吃,最近不少朋友家里又出现智能门锁,相比传统门锁来说,究竟能有多智能......
  • Spring Boot Validation统一参数校验
    实现方式  使用 @Validated注解配合参数校验注解,比如:@NotEmpty对参数进行校验。然后对抛出的异常ControllerAdvice进行捕获然后调整输出数据。1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validati......
  • 第十六章——处理锁、阻塞和死锁(3)——使用SQLServer Profiler侦测死锁
    前言:作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用。此时,你需要尽快侦测和处理这类问题。死锁是当两个或者以上的事务互相阻塞引起的。在这种情况下两个事务会无限期地等待对方释放资源以便操作。下面是死锁的示意图: 本文将使用SQLServerProfi......
  • bootmgfw.efi 是 Windows 操作系统中的一个关键文件,它是用于启动 UEFI(统一扩展固件接
    bootmgfw.efi是Windows操作系统中的一个关键文件,它是用于启动UEFI(统一扩展固件接口)计算机的WindowsBootManager。这个文件通常位于Windows安装的EFI系统分区(ESP)中的\EFI\Microsoft\Boot\目录下。在UEFI计算机上,bootmgfw.efi负责加载Windows操作系统的启动程......