【发布时间】:2022-10-01 13:23:42
【问题描述】:
如果满足某些条件,我正在用 Python 编写代码以连续发送三个 POST 请求。 POST 请求被发送到 FTX 交易所(这是一个加密交易所),每个请求都是一个“买入”订单。
第二个订单在第一个订单完成后立即触发,第三个订单在第二个订单完成后立即触发。为了加快代码速度(我需要在时间上非常接近地执行订单),我将所有 POST 请求发送到一个子进程(使用multiprocessing.Process()),而不是等待请求响应,我等待从 websocket 连接到通知每个新成交订单的walletchannel 的更新。这个 websocket 连接是在代码的最开始的一个子进程中打开的。
所以,代码的时间线如下
- 打开到
wallet通道的Websocket 连接 - 循环直到满足条件
- 如果为 True,则退出循环并通过 POST 请求发送第一个订单
- 等到第一个订单完成(即从 websocket 更新)
- 通过 POST 请求发送第二个订单
- 等到第二个订单完成(即从 websocket 更新)
- 通过 POST 请求发送第三个订单
- 等到第三个订单完成(即从 websocket 更新)
- 返回“已提交并填写的订单”
我有一个小问题,在步骤 (4) 中来自 websocket 的更新需要太多时间才能到达(大约 1 秒),而步骤 (6) 和 (8) 非常快(大约毫秒) .
看起来 websocket 连接在步骤 (3)-(4) 之前以某种方式处于休眠状态,并且接收消息需要一些时间,但是,一旦收到第一条消息,所有后续消息都会很快到达。我不是网络专家...如何避免从 websocket 接收第一条消息时出现这种延迟?
我每 20 秒 ping 一次 websocket 连接,并在 10 秒内等待一个 pong。
【问题讨论】:
标签: python api websocket python-requests http-post