调用Binance API时响应返回的交易时间晚于本地当前时间问题咨询
Binance API返回时间早于本地时间的原因
- 本地系统时间存在偏差
绝大多数消费级设备的本地时间默认没有开启高精度NTP同步,或同步频率较低,本身与全球标准时间存在几毫秒到数十秒的偏移。Binance服务器时间严格同步高精度标准时间,当你的本地时间慢于标准时间时,就会出现本地时间减去服务器返回时间结果为负的情况。 - 时间采样的时序差
你代码中time.time()的采样时机是在请求响应完全回到本地、并完成JSON解析之后,而响应内的time字段是Binance服务器生成响应数据时的时间戳。从服务器生成响应到本地完成解析、执行到时间采样代码的过程中,会经过网络传输、系统IO调度、代码执行的耗时,但该耗时通常在百毫秒以内,只有当本地时间完全对齐标准时间时,你计算的差值才会为正,数值等于上述全链路耗时。 - 接口字段的属性差异
你调用的/fapi/v1/ticker/bookTicker接口返回的time字段为最新最优挂单的更新时间,更新频率可达毫秒级,会存在请求传输途中服务器端该字段已完成更新的情况,进一步放大时间差表现。
验证方法
你可以先调用Binance服务器时间接口对比本地时间偏差,直接确认问题根源:
import time import requests server_res = requests.get("https://fapi.binance.com/fapi/v1/time").json() server_ts = server_res['serverTime'] / 1000 local_ts = time.time() print(f"本地时间与Binance服务器时间偏差:{local_ts - server_ts} 秒")
如果输出为负数,就说明你的本地时间慢于服务器标准时间,就是你遇到问题的核心原因。
内容的提问来源于stack exchange,提问作者Hey
相关产品推荐
相关产品推荐

