使用Zeromq的Python脚本停止接收消息

使用Zeromq的Python脚本停止接收消息,python,configuration,network-programming,zeromq,Python,Configuration,Network Programming,Zeromq,我有一个使用zeromq和pyzmq连接器的python脚本。脚本实际上是一个基本的脚本,它使用ZMQ_REP socket来接收消息,用它做一些小事情并将其发送回,所有这些都是在一个无限循环中完成的。没有多线程或任何其他功能 问题是,当我在服务器上运行该服务时,大约15小时后,它停止响应,并且仍在运行,端口仍处于绑定状态。因此,当我用ZMQ_REQ套接字向该脚本发送消息时,我没有得到答案。当我重新启动脚本时,它会从zmq队列中获取所有未使用的消息,因此我怀疑问题出在pyzmq连接器或某些pyt

我有一个使用zeromq和pyzmq连接器的python脚本。脚本实际上是一个基本的脚本,它使用ZMQ_REP socket来接收消息,用它做一些小事情并将其发送回,所有这些都是在一个无限循环中完成的。没有多线程或任何其他功能

问题是,当我在服务器上运行该服务时,大约15小时后,它停止响应,并且仍在运行,端口仍处于绑定状态。因此,当我用ZMQ_REQ套接字向该脚本发送消息时,我没有得到答案。当我重新启动脚本时,它会从zmq队列中获取所有未使用的消息,因此我怀疑问题出在pyzmq连接器或某些python或zmq套接字配置中


我在两个不同国家的两台不同服务器上尝试了这个脚本,一台运行ArchLinux、second CentOS,另一台运行我的本地机器,行为都是一样的。此外,我还尝试运行python脚本,该脚本使用基本的python套接字,只接收字符串消息并将其发送回,并且在10天内可以正常工作并发送回消息,而无需重新启动。所以问题肯定出在zmq/pyzmq的某个地方。

消息多久发送一次?您可能需要实现心跳来维持可靠的连接。指南中列出的“”模式工作得很好

ZMQ_REQ和ZMQ_REP脚本是在同一台机器上,还是分布在网络上?您是使用基本的
socket.send()
socket.recv()
函数进行通信,还是使用轮询器?您是否尝试记录ZMQ_REP脚本以查看它的确切位置?您可以发布一些代码吗?进程终止前内存使用是否增加?您使用的是什么版本的zmq和python?我以前遇到过python长时间运行脚本的问题,一个简单的解决方案可能是在处理N个请求后重新启动进程(gunicorn就是这样处理工作进程中的内存泄漏的)。