簡體   English   中英

Pyro4不會拋出ConnectionClosedError

[英]Pyro4 does not throw 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命令一直等到Event boolean設置為True時,當服務器關閉時這是完全不可能的。 如果服務器仍在運行,但是我關閉了pyro守護程序並突然終止正在進行的進程,則拋出連接關閉錯誤,但是當整個服務器關閉時,我希望它。

不使用異步對象,這仍然會產生相同的問題(只是掛起):

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)

那么,如何確定何時失去連接?

只需將Pyro4.config.COMMTIMEOUT設置為適當的值即可(默認值為0,表示無窮大)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM