Python 2.7 Pyro4不会抛出ConnectionClosedError

Python 2.7 Pyro4不会抛出ConnectionClosedError,python-2.7,amazon-ec2,pyro,Python 2.7,Amazon Ec2,Pyro,我正在运行pyro 4.31。我需要能够在代理对象与远程对象失去连接(即服务器突然关闭)时捕获异常 我有这样的代码: for ... proxy = Pyro4.async(Pyro4.Proxy(pyro_uri)) future_result[i] = proxy.run() ... some other code for .... try: future_result[i].wait() except ConnectionClosedError:.... 在某种程度上,这是有

我正在运行pyro 4.31。我需要能够在代理对象与远程对象失去连接(即服务器突然关闭)时捕获异常

我有这样的代码:

for ...
  proxy = Pyro4.async(Pyro4.Proxy(pyro_uri))
  future_result[i] = proxy.run()
... some other code
for ....
try:
  future_result[i].wait()
except ConnectionClosedError:....
在某种程度上,这是有效的,并且在连接丢失的情况下抛出了ConnectionClosedError,但现在它只是继续挂起wait命令,即使服务器关闭。我查看了de Pyro4代码,我必须说,我看不到连接丢失如何解除对wait命令的阻止,因为wait命令一直等到事件布尔值设置为True,这在服务器关闭时是不可能做到的。如果服务器仍在运行,但我关闭了pyro守护进程并突然终止了正在进行的进程,则会抛出一个连接关闭错误,但我希望在整个服务器停机时抛出该错误

不使用异步对象这仍然会产生相同的问题(只是挂起):


那么如何检测连接何时丢失呢?

只需将
Pyro4.config.COMMTIMEOUT
设置为适当的值(默认值为0,表示无限)

proxy=Pyro4.Proxy(pyro_uri)
try: rs=proxy.run(mms)
except ConnectionClosedError: print "connection closed"
except TimeoutError: print "timeout error"
except CommunicationError: print "communication closed"
print "finished"
print str(rs)