使用requests库发起HTTP/HTTPS GET请求后如何获取对应时间戳?
解决方案
1. 记录本地请求时间戳
你可以在请求执行前后分别采集本地时间戳,即可获得请求发起、结束的时间以及实际耗时:
import requests from datetime import datetime # 采集请求发起时间戳(单位:秒) req_start_ts = datetime.now().timestamp() raw = requests.get(url) # 采集响应接收完成时间戳 req_end_ts = datetime.now().timestamp() print(f"请求发起时间戳:{req_start_ts}") print(f"请求总耗时:{req_end_ts - req_start_ts:.2f} 秒")
2. 获取服务器端响应时间戳
如果你想确认是本地网络延迟还是服务器端返回了非实时内容,可以读取响应头的Date字段,这是服务器返回响应时的标准UTC时间:
import requests from datetime import datetime raw = requests.get(url) server_date_str = raw.headers.get("Date") if server_date_str: # 解析HTTP标准时间格式 server_dt = datetime.strptime(server_date_str, "%a, %d %b %Y %H:%M:%S GMT") server_ts = server_dt.timestamp() print(f"服务器生成响应的时间戳:{server_ts}")
注意:Date字段是HTTP协议规定的标准响应头,绝大多数HTTP服务都会返回,少数特殊配置的服务可能没有这个字段
额外排查建议
如果服务器返回的时间戳和你本地请求时间差很小,但拿到的内容是数分钟前的,说明接口本身返回的是缓存数据,可以在请求时添加禁用缓存的请求头尝试获取实时内容:
headers = { "Cache-Control": "no-cache", "Pragma": "no-cache" } raw = requests.get(url, headers=headers)
内容的提问来源于stack exchange,提问作者Felix Amador
相关产品推荐
相关产品推荐

