首页 > 其他分享 >django利用中间件记录接口时长

django利用中间件记录接口时长

时间:2022-09-27 16:47:05浏览次数:54  
标签:中间件 middleware request 接口 django time response

# -*- coding: utf-8 -*-
"""
计算每个接口请求时长
"""
import time
import logging
from django.utils.deprecation import MiddlewareMixin


class ApiTimeMiddleWare(MiddlewareMixin):
   """
  记录api用时
  """
   def process_request(self, request):
       """
      请求, 中间件从上到下先走process_request, 目前先打点记录请求进入时间戳
      :param request: 请求对象
      :return: None
      """
       request.start_time = time.time()

   def process_response(self, request, response):
       """
      响应, 中间件倒序执行 process_response
      :param request: 请求对象
      :param response: 响应对象
      :return: 响应对象
      """
       total_time = time.time() - request.start_time
       path = request.get_full_path()
       # 增加响应头(可以加也可以不加)
       response["X-Page-Duration-ms"] = int(total_time * 1000)
       logging.info({'request_path': path, 'total_time': total_time})
       return response

settings.py 配置文件修改

MIDDLEWARE = [
   'django.middleware.security.SecurityMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware',
   'utils.ApiTimeMiddleware.ApiTimeMiddleWare',
]
 

标签:中间件,middleware,request,接口,django,time,response
From: https://www.cnblogs.com/yyx0417/p/16735033.html

相关文章

  • python接口测试1-简单的接口测试
    使用requests包配置请求的url、headers、如果是post,put方法,还需要有请求的body注意空值,在python中应写为None  ......
  • loadrunner写webservice接口
    先用soupUI调试 fiddler抓包然后再写:web_custom_request("createSoapOrder",      "URL=http://{hosts}:****/****/webService/eifWebService",     ......
  • nodejs调用外部接口
    前言在日让的工作开发中,我们不仅仅要使用node来封装提供一些http接口,也会在node服务中调用一些第三方的HTTP接口,那么如何操作?request安装依赖npminstallrequest-S......
  • django rest-framework 自定义异常捕获类
    djangorest-framework自定义异常捕获类环境:django3.2python3先创建文件exceptions.py(文件名称可以自定义)1、重写exception_handler,自定义异常类#-*-coding:ut......
  • 小程序接口请求的初次封装
    我们在写微信小程序中不管是用原生的微信开发者工具还是用uniapp来开发都需要用到数据的请求,在页面中大量的使用请求无疑会造成代码的冗余,也会给后期的维护带来很大的难......
  • 常用的函数式接口_Function接口和常用的函数式接口_Function接口_默认方法andThen
    常用的函数式接口_Function接口:java.util.function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。Function接口中......
  • java面向对象--接口
    java面向对象--接口普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有接口:只有规范,面向接口编程。关键词:声明类class声明接口interfacepackagecharpter......
  • 常用的函数式接口_Predicate接口_默认方法or&negate和常用的函数式接口_Predicate接口
    常用的函数式接口_Predicate接口_默认方法or&negate:需求:判断一个字符串长度是否大于5如果字符串的长度大于5,那么返回false如果字符串的长度不大于5,那么返回true所以我......
  • 使用django内置User表,继承AbstractBaseUser
    使用django内置User表,继承AbstractBaseUser本篇文章借鉴:https://blog.csdn.net/qq_29892201/article/details/108258457环境:django3.2python3使用django内置User表,......
  • 浙里办调试接口总结
    publicRzlbLoginnew(Stringticket){StringSecretKey="xxx";StringAccessKey="xxx";Stringurl="浙里办个人登陆获取信息地址IC33xxx02";......