为什么ZeroMQ在PUSH / PULL MT4-Python设置上变得太大时不接收字符串?

问题描述 投票:0回答:1

我已经设置了一个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)

现在我有点好奇,因为pull套接字似乎甚至无法在单个MT4客户端-Python连接上处理包含40个交易及其相应信息的字符串。我实际上计划将其设置为处理超过5.000 MT4客户端-一次处理python后端连接。

我已经设置了一个EA,可以循环历史交易并使用交易信息构建一个大字符串。然后,我使用普通的PUSH / PULL将字符串从MT4每秒钟从MT4发送到python后端...

zeromq distributed-system mql4 low-latency metatrader4
1个回答
1
投票

Q

© www.soinside.com 2019 - 2024. All rights reserved.