Update middleware.py

master
p36kxhw2t 1 week ago
parent 89ebd0bd5d
commit 089db2863f

@ -1,42 +1,42 @@
import logging
import time
import logging #ZNY 导入日志模块
import time #ZNY 导入时间模块
from ipware import get_client_ip
from user_agents import parse
from ipware import get_client_ip #ZNY 导入获取客户端IP的工具
from user_agents import parse #ZNY 导入解析用户代理的工具
from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager
from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager #ZNY 导入Elasticsearch配置和性能文档管理器
logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__) #ZNY 获取当前模块的日志记录器
class OnlineMiddleware(object):
def __init__(self, get_response=None):
self.get_response = get_response
super().__init__()
class OnlineMiddleware(object): #ZNY 定义在线中间件类
def __init__(self, get_response=None): #ZNY 初始化方法
self.get_response = get_response #ZNY 存储get_response函数
super().__init__() #ZNY 调用父类初始化
def __call__(self, request):
''' page render time '''
start_time = time.time()
response = self.get_response(request)
http_user_agent = request.META.get('HTTP_USER_AGENT', '')
ip, _ = get_client_ip(request)
user_agent = parse(http_user_agent)
if not response.streaming:
def __call__(self, request): #ZNY 使实例可调用,处理请求
''' page render time ''' #ZNY 页面渲染时间统计
start_time = time.time() #ZNY 记录请求开始时间
response = self.get_response(request) #ZNY 调用后续中间件和视图处理请求
http_user_agent = request.META.get('HTTP_USER_AGENT', '') #ZNY 获取用户代理字符串
ip, _ = get_client_ip(request) #ZNY 获取客户端IP地址
user_agent = parse(http_user_agent) #ZNY 解析用户代理信息
if not response.streaming: #ZNY 如果不是流式响应
try:
cast_time = time.time() - start_time
if ELASTICSEARCH_ENABLED:
time_taken = round((cast_time) * 1000, 2)
url = request.path
from django.utils import timezone
ElaspedTimeDocumentManager.create(
url=url,
time_taken=time_taken,
log_datetime=timezone.now(),
useragent=user_agent,
ip=ip)
response.content = response.content.replace(
b'<!!LOAD_TIMES!!>', str.encode(str(cast_time)[:5]))
except Exception as e:
logger.error("Error OnlineMiddleware: %s" % e)
cast_time = time.time() - start_time #ZNY 计算总处理时间
if ELASTICSEARCH_ENABLED: #ZNY 如果Elasticsearch已启用
time_taken = round((cast_time) * 1000, 2) #ZNY 转换为毫秒并保留两位小数
url = request.path #ZNY 获取请求路径
from django.utils import timezone #ZNY 导入时区工具
ElaspedTimeDocumentManager.create( #ZNY 创建性能记录文档
url=url, #ZNY 请求URL
time_taken=time_taken, #ZNY 耗时
log_datetime=timezone.now(), #ZNY 当前时间
useragent=user_agent, #ZNY 用户代理信息
ip=ip) #ZNY IP地址
response.content = response.content.replace( #ZNY 在响应内容中替换占位符
b'<!!LOAD_TIMES!!>', str.encode(str(cast_time)[:5])) #ZNY 将加载时间插入到指定位置
except Exception as e: #ZNY 捕获异常
logger.error("Error OnlineMiddleware: %s" % e) #ZNY 记录错误日志
return response
return response #ZNY 返回响应对象

Loading…
Cancel
Save