如何合并含相同related_id的日志并计算timestamp时间差(请求延迟)
日志合并与延迟计算方案
需求说明
将带有相同related_id的请求、响应日志合并,计算请求的延迟(响应时间减去请求时间),并输出指定格式的结果。
示例输入
2023-07-19 00:00:00 request related_id 123 2023-07-19 00:00:05 response related_id 123
期望输出
related_id 123 latency 5s
实现思路及示例代码
核心逻辑是通过related_id关联请求与响应日志,计算时间差:
- 解析每条日志的时间戳、日志类型和
related_id - 用字典存储每个
related_id对应的请求时间戳 - 匹配到响应日志时,计算时间差并输出结果
以下是Python实现示例:
from datetime import datetime # 可替换为读取日志文件的逻辑 logs = [ "2023-07-19 00:00:00 request related_id 123", "2023-07-19 00:00:05 response related_id 123" ] request_records = {} for line in logs: parts = line.split() time_str = f"{parts[0]} {parts[1]}" log_type = parts[2] rid = parts[4] current_time = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S") if log_type == "request": request_records[rid] = current_time elif log_type == "response" and rid in request_records: latency = int((current_time - request_records[rid]).total_seconds()) print(f"related_id {rid} latency {latency}s")
内容的提问来源于stack exchange,提问作者lee_zone
相关产品推荐
相关产品推荐

