python - ZeroMQ收不到消息怎么办?

标签 python zeromq

我有某种分布式控制系统,每秒都会发送一次心跳。在接收端,如果超过 2 秒没有收到消息,我需要采取行动。问题是,当 ZeroMQ 等待答案时,我无法做任何其他事情,例如检查自收到最后一条消息以来已经过去了多长时间。

我现在的代码如下。有人知道如果超过 2 秒没有收到消息我该如何采取行动吗?欢迎所有提示!

[编辑] 根据 Pieter Hintjes 的提示,我在代码中添加了轮询,但仍然不起作用。还有其他想法吗?

from datetime import datetime
import zmq
context = zmq.Context()

# Set up subscriber connection to receive message from broker
subscriber = context.socket(zmq.SUB)
subscriber.connect('tcp://localhost:8888')
subscriber.setsockopt(zmq.SUBSCRIBE, 'beat')

# Initialise poll set
poller = zmq.Poller()
poller.register(subscriber, zmq.POLLIN)

while True:
    socks = dict(poller.poll(2000))
    if subscriber in socks and socks[subscriber] == zmq.POLLIN:
        message = subscriber.recv()
        print(message)

    print('do other stuff')

最佳答案

在 ZMQ 套接字上使用轮询而不是阻塞接收。 ZeroMQ 指南中有很多这方面的示例。

关于python - ZeroMQ收不到消息怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15549751/

相关文章:

python - 通过 zmq ipc 发送现有的字典

c# - ZeroMQ C# 客户端未接收到 C++ 服务器发布/订阅版本 3.2

node.js - ZMQ 套接字在 Kubernetes 上无法按预期工作

python - 如何阻止它返回 "\n"以及列表中的数据?

python - Pytorch XOR 实现舍入问题?

c++ - protobuf 与 zeromq 与 C++ 的链接错误

c#-4.0 - 发布者和订阅者中的 NetMQ 不工作

python - 如何以编程方式将新函数添加到 Python 中的当前作用域?

python - 将视频中检测到的边缘帧保存为视频(opencv)

python - 嵌套列表理解