django利用中间件记录接口时长
# -*- 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',
]
分类:
django
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)