我用 Python 编写了一个代码,使用 FTX 交易所的 API 从该交易所提取数据。我在 AWS 实例(免费计划)中运行该代码,该实例距离交易所的服务器非常近。
代码解释:
代码本质上是一个无限循环。在每个步骤中,它都会发送三个获取请求,详细说明响应,然后进入下一步。对于前几百次迭代,每个三个请求块的延迟(在文章末尾定义)约为 0.3 秒。一段时间后,它开始增长,达到 2 到 5 秒的值。FTX API 中没有请求的速率限制GET
,因此我不应该期望服务器有任何限制。
我需要的:
我正在尝试了解这种额外延迟的根源。为此,我监控了 https 数据流量,tcpdump
并修改了 python 脚本,以便它在延迟 > 2 秒时立即停止。通过这种方式,我可以隔离输出中的最后一个数据包tcpdump
并尝试了解延迟的根源。
但是,我真的不知道如何阅读输出(我将其上传到这里https://pastebin.com/tAhcicPU)。有人能帮我了解延迟的原因吗?104.18.33.31.443 是 FTX 服务器的 IP 172.31.9.8 是我代码运行的机器的 IP
此处使用的延迟定义:我发布了计算延迟的相关代码部分
latency=0
for pair in pairList: # pairList = ['BTC/USD','ETH/BTC','ETH/USD']
api=requests.get(f'https://ftx.com/api/markets/{pair}/orderbook?depth={20}')
latency+=api.elapsed.total_seconds()
return latency
因此,延迟是每个请求的 request.get 返回的每个延迟的总和。