2016-07-26 3 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!") 
Смежные вопросы