检查Pyro远程对象是否可访问

时间:2016-07-26 03:40:37

标签: python pyro

我的每台虚拟机都运行一台Pyro服务器。这些都是相同的对象,我只是运行它们以确保可靠性。我希望能够监视这些对象是否“活着”并且是否可访问。

假设我有自己的URI,如何在不尝试运行实际对象的方法的情况下检查它是否运行?

一种选择是在这些对象中编写一个简单的noop方法,远程调用它,如果存在连接问题,我就知道该对象无法访问。

在Pyro中有没有内置方法可以做到这一点?似乎是一个常见的用例。

1 个答案:

答案 0 :(得分:4)

您不必向对象添加noop / ping方法,因为您可以在代理对象上使用_pyroBind()方法。如果对象不可访问,它将引发CommunicationError。例如,查看名称服务器是否在端口9999上运行:

import Pyro4
import Pyro4.errors

with Pyro4.Proxy("PYRO:Pyro.NameServer@localhost:9999") as p:
    try:
        p._pyroBind()
        print("YEP IT IS RUNNING!")
    except Pyro4.errors.CommunicationError:
        print("NOPE IT IS NOT REACHABLE!")