我有一个 python 脚本,它使用 zeromq 和 pyzmq 连接器。脚本确实是一个基本脚本,它使用 ZMQ_REP 套接字接收消息,用它做一些小事然后发回,所有这些都在一个无限循环中。没有多线程或其他任何东西。
问题是当我在我的服务器上运行该服务时,大约 15 小时后它停止响应,并且它仍在运行并且端口仍然绑定(bind)。因此,当我使用 ZMQ_REQ 套接字向该脚本发送消息时,我没有得到答复。当我重新启动脚本时,它会从 zmq 队列中获取所有未使用的消息,因此我怀疑问题出在 pyzmq 连接器或某些 python 或 zmq 套接字配置中。
我在 2 个不同国家/地区的 2 台不同服务器上尝试了该脚本,其中一台运行 ArchLinux,第二台运行 CentOS,在我的本地计算机上,行为是相同的。我还尝试运行使用基本 python 套接字的 python 脚本,这些套接字只接收字符串消息并将其发回,并且它正在工作并在 10 天内毫无问题地发回消息,而无需重新启动它。所以问题肯定在 zmq/pyzmq 的某个地方。
请您参考如下方法:
消息发送的频率是多少?您可能需要实现心跳以维持可靠的连接。指南中列出的“Paranoid Pirate”模式效果很好。
