我正在使用quickfix python并通过TCP连接连接到交易所以接收来自他们的订单簿市场数据更新。
我从交易服务器以相当高的频率接收市场数据增量刷新消息(MsgType=X)。本来接收时间和52字段(发送时间)显示的时间不会有任何区别。
从 FIX 日志中,接收时间和发送时间之间的差异逐渐增大,直到变成 1 小时差异,如下所示: 20241112-21:00:01.000000000 : 8=FIX.4.452=20241112-19:51:16.421
FIX日志中记录的发送时间与我收到此消息的实际时间不匹配的可能原因是什么
QuickFIX 在单个线程上处理消息——在处理完消息 A 之前,它不会开始处理消息 B。
因此,QF 回调实现快速返回非常重要,否则在处理大量消息后您将开始看到滞后。
我怀疑这正是发生在你身上的事情。 您的
onMessage(MarketDataIncrementalRefresh)
(或任何 Python 版本)中的逻辑需要很长时间才能完成,并且会导致备份。
(令我惊讶的一件事是,您的应用程序在达到 1 小时延迟之前不久就崩溃了。默认的
MaxLatency
配置是 120 秒。您是否已将该值提高到一个非常大的数字?)
一种解决方案:
让您的
onMessage
回调将传入的 X 消息推送到队列,并让一个单独的线程消耗该队列中的这些消息并进行您需要的处理。
当然,找出加快处理逻辑的方法。