前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手写一个django middleware

手写一个django middleware

作者头像
Hsinyan
发布2022-06-19 17:50:01
1780
发布2022-06-19 17:50:01
举报

实现

在app里新建一个performance.py文件,用来定义我们的中间件函数,这里实现的函数功能为记录页面的访问时间。

代码语言:javascript
复制
import time
import logging

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 header中写入页面访问耗时的属性
        response["X-Page-Duration-ms"] = int(duration * 1000)
        # 载入日志
        logger.info("%s %s %s", duration, request.path, request.GET.dict() )
        return response

    return middleware

随后在django项目设置文件里面注册中间件,我的performance.py文件是创建在interviewapp里面的,所以我引入的链接为interview.performance.performance_logger_middleware

测试

这里我已经设置了将日志打印至命令行以及写入日志文件,具体配置请查看django文档中日志部分。

至此,一个简单的中间件就实现了,同样的,也可以使用类的方法类定义一个中间件(可以参考django中间件的源码,都是基于类的方法类定义中间件的),本文例子中使用函数的方法定义只是为了方便。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现
  • 测试
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档