检查 Pyro 远程对象是否可达
Checking if Pyro remote objects are reachable
我的每个虚拟机中都有一个 Pyro 服务器 运行ning。这些都是相同的对象,我只是 运行ning 它们以确保可靠性。我希望能够监控这些对象是否 "alive" 并且可以访问。
假设我有他们的 URI,我如何在不尝试 运行 实际对象的方法来查看它是否 运行 的情况下检查它?
一个选择是在这些对象中编写一个简单的 noop
方法,远程调用它,如果出现连接问题,我会知道该对象无法访问。
Pyro 是否有内置的方法来做到这一点?似乎是一个足够常见的用例。
您不必向对象添加 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!")
我的每个虚拟机中都有一个 Pyro 服务器 运行ning。这些都是相同的对象,我只是 运行ning 它们以确保可靠性。我希望能够监控这些对象是否 "alive" 并且可以访问。
假设我有他们的 URI,我如何在不尝试 运行 实际对象的方法来查看它是否 运行 的情况下检查它?
一个选择是在这些对象中编写一个简单的 noop
方法,远程调用它,如果出现连接问题,我会知道该对象无法访问。
Pyro 是否有内置的方法来做到这一点?似乎是一个足够常见的用例。
您不必向对象添加 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!")