2016-07-26 28 views
0

我有一臺Pyro服務器在我的每臺虛擬機中運行。這些都是相同的對象,我只是運行它們來確保可靠性。我希望能夠監視這些對象是否「活着」並且可以到達。檢查Pyro遠程對象是否可達

假設我有他們的URI,我該如何檢查,而不嘗試運行實際對象的方法來查看它是否運行?

一種方法是在這些對象中編寫一個簡單的noop方法,遠程調用它,如果存在連接問題,我會知道該對象無法訪問。

在Pyro中有內置的方法嗎?看起來像一個普通的用例。

回答

3

您不必爲您的對象添加noop/ping方法,因爲您可以在代理對象上使用_pyroBind()方法。如果對象無法訪問,它將引發CommunicationError。例如,查看名稱服務器是否在端口9999上運行:

import Pyro4 
import Pyro4.errors 

with Pyro4.Proxy("PYRO:[email protected]:9999") as p: 
    try: 
     p._pyroBind() 
     print("YEP IT IS RUNNING!") 
    except Pyro4.errors.CommunicationError: 
     print("NOPE IT IS NOT REACHABLE!")