【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)

简介: 【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)

文章目录

一、 中间件介绍

官方文档

图片.png

图片.png

图片.png

二、创建请求日志,性能日志记录中间件

  • 用于记录用户请求url 花费时间以及参数

图片.png

1. 在interview项目创建脚本performance.py

2. 添加代码

最外层函数必须接受函数get_response,必须要存在内部函数middleware以用作为中间件函数返回

import logging
import time
logger = logging.getLogger(__name__)  # 默认模块路径名
def performance_logger_middleware(get_response):
  def middleware(request):
    start_time = time.time()
    response = get_response(request)
    duration = time.time() - start_time
    # 添加到表头(可以在浏览器直接看到)
    response.headers['X-page-Duration-ms'] = int(duration * 1000)
    logger.info(f"duration: {duration} path: {request.path} parameter: {request.GET.dict()} ")
    return response
  return middleware

3. 添加到setting文件 ( 由于是处理 请求耗时,所以我们放在第一个位置)

MIDDLEWARE = [
  'interview.performance.performance_logger_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',
]

4. 配置logger模块

添加handels处理器,和添加记录器logger

    'performance_file': {
      'formatter': 'simple',
      'level': 'INFO',
      'filename': os.path.join(BASE_DIR,'logs/performance.log'),
      'class': 'logging.FileHandler'
    }
'loggers': {
    # 默认使用loggers 没有指定则使用root
    # django 默认记录器
    'django': {
      'handlers': ['file', 'console'],
      'level': 'INFO',
      'propagate': True,
    },
    # 与logger名字一样
    'interview.performance': {
      'handlers': ['console','performance_file'],
      'propagate': False,
      'level': 'INFO',
    }
  }

5. 运行服务器

  • 刷新页面几次可以看到 日志记录成功图片.png
  • 终端也显示成功图片.png
  • 浏览器也能看到header 标头信息
    图片.png

参考文献:

git -u 参数

🤞到这里,如果还有什么疑问🤞
    🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
      🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
673 1
|
Shell 数据库 网络架构
Django+DRF 实战:从异常捕获到自定义错误信息(下)
本文详解了 Django REST Framework 中 ValidationError 的验证流程与优先级,涵盖字段内置验证、自定义验证方法、对象级验证及数据库约束,并通过实战演示如何自定义异常提示信息。
397 1
Django+DRF 实战:从异常捕获到自定义错误信息(下)
|
存储 前端开发 应用服务中间件
Django 实战:静态文件与媒体文件从开发配置到生产部署
Django项目中,静态文件(Static Files)和媒体文件(Media Files)是两类不同用途的文件。本文详细介绍了它们的区别、配置方法以及在开发与生产环境中的处理方式,并结合用户头像上传功能进行实战演示,最后讲解了如何通过Nginx或OpenResty部署静态与媒体文件服务。
648 1
|
数据安全/隐私保护 网络架构 UED
Django+DRF 实战:从异常捕获到自定义错误信息
本文介绍了DRF(Django REST framework)中的异常处理机制,重点讲解了内置异常类ValidationError的使用场景与示例。同时通过用户注册功能的实战演示,展示了如何在序列化器中自定义参数校验规则,并在视图中捕获并返回结构化的错误信息,提升接口的健壮性与用户体验。
310 0
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
771 6
|
存储 NoSQL 架构师
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
916 4
|
NoSQL 中间件 Java
字节面试:聊聊 CAP 定理?哪些中间件是AP? 哪些是CP? 说说 为什么?
45岁老架构师尼恩在其读者交流群中分享了关于CAP定理的重要面试题及其解析,包括CAP定理的基本概念、CAP三要素之间的关系,以及如何在分布式系统设计中权衡一致性和可用性。文章还详细分析了几种常见中间件(如Redis Cluster、Zookeeper、MongoDB、Cassandra、Eureka、Nacos)的CAP特性,并提供了高端面试技巧,帮助读者在面试中脱颖而出。尼恩还推荐了其团队编写的《尼恩Java面试宝典PDF》等资料,助力求职者准备面试,提升技术水平。
|
JSON 中间件 数据格式
django获取request请求头信息,获取Content-Type
django获取request请求头信息,获取Content-Type
426 4
|
数据库 数据安全/隐私保护 数据库管理
#099473#基于django的毕业生信息管理招聘系统
#099473#基于django的毕业生信息管理招聘系统
279 4
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
1312 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。

热门文章

最新文章