>我设置了一个EA,它循环历史交易并构建一个包含交易信息的大字符串。然后,我使用纯PUSH/PULL
模式每秒将此字符串从MT4发送到python后端。
无论出于何种原因,当传输的字符串变得太长时,拉取侧不会收到数据。后端PULL
-socket 对每个字符串进行切片并进一步处理。
PULL
端是否有可能太慢而无法抓取和处理所有数据,从而导致溢出(因此由于处理部分而出现延迟(?
谈到文件大小,我们远低于每秒5kb。
这是PULL
套接字,它在接收数据后对其进行操作:
while True:
# check 24/7 for available data in the pull socket
try:
msg = zmq_socket.recv_string()
data = msg.split("|")
print(data)
# if data is available and msg is account info, handle as follows
if data[0] == "account_info":
[...]
except zmq.error.Again:
print("nResource timeout.. please try again.")
sleep(0.000001)
我现在有点好奇,因为拉套接字似乎甚至无法在单个 MT4 客户端 - Python 连接上处理包含 40 笔交易及其相应信息的字符串。我实际上计划将其设置为一次处理超过 5.000 个 MT4 客户端 - python 后端连接。
问:拉侧是否可能太慢而无法抓取和处理所有数据,从而导致溢出(因此由于处理部分而出现延迟(?
零机会。
每秒发送 640 B 绝对不会阻碍(每秒 5kb- 远未达到性能上限......
否则,发布的问题表述是不可判定的。
步骤1(POSACK/NACK
证明PUSH
端是否接受有效负载以无差错发送。
步骤 2(证明PULL
端不应受到指责 - 通过python-2-pythontcp://
传输类单通道跨主机到主机跃点,至少通过本地物理网络(没有 VMCI/模拟 vLAN,没有其他本地主机托管([PUSH.send(640*chr(64+i)) for i in range( 10 )]
步骤3( 如果上述任一步骤都POSACK
-ed,您的下一个机会是 ZeroMQ 配置空间和/或基于 MT4 的PUSH
端不兼容,很可能"隐藏"在(未提及(第三方 ZeroMQ 包装器中使用/string
处理/处理的第一方问题(您一定已经阅读过,因为在过去的帖子中已经多次观察到并提到了这个"隐藏"MQL4 内部生态系统的问题更改(。
无论如何,请继续关注。ZeroMQ是分布式系统领域中专业和低延迟设计的真正选择和真正的马力。