问题描述
我有一堆客户端通过0MQ连接到服务器.我有一个Manager队列,用于一个工作池,以便与每个客户端计算机上的主进程进行通信.
I have a bunch of clients connecting to a server via 0MQ. I have a Manager queue used for a pool of workers to communicate back to the main process on each client machine.
在只有一台具有250个工作进程的客户端计算机上,我几乎立即看到一堆EOFError.它们发生在执行put()的时候.
On just one client machine having 250 worker processes, I see a bunch of EOFError's almost instantly. They occur at the point that the put() is being performed.
我希望大量的交流会减慢一切,但是我永远都不会在内部多处理逻辑中看到EOFError.我没有使用gevent或任何可能破坏标准套接字功能的东西.
I would expect that a lot of communication might slow everything down, but that I should never see EOFError's in internal multiprocessing logic. I'm not using gevent or anything that might break standard socket functionality.
任何关于将什么放入管理器队列的想法都会引发EOFError?
Any thoughts on what could make puts to a Manager queue start raising EOFError's?
推荐答案
对我来说,错误实际上是我的接收过程引发了异常并终止了,因此发送过程正在接收EOFError,这意味着进程间通信管道已关闭.
Hey so for me the error was actually that my receiving process had thrown an exception and terminated, and so the sending process was receiving an EOFError, meaning that the interprocess communication pipeline had closed.
这篇关于EOFError与多处理管理器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!