我的每台虚拟机都运行一台Pyro服务器。这些都是相同的对象,我只是运行它们以确保可靠性。我希望能够监视这些对象是否“活着”并且是否可访问。
假设我有自己的URI,如何在不尝试运行实际对象的方法的情况下检查它是否运行?
一种选择是在这些对象中编写一个简单的noop
方法,远程调用它,如果存在连接问题,我就知道该对象无法访问。
在Pyro中有没有内置方法可以做到这一点?似乎是一个常见的用例。
答案 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!")