Pyro4 убить пустой сервер имен

Я использую Pyro4 в распределенной системе. Моя проблема в том, что после соединения двух сетей может появиться много серверов имен. Это нормально для меня, но если какая-либо из них пуста (объекты не зарегистрированы), моя сеть может выйти из строя. Это потому, что я реализую аккорд, и мне нужно знать, если какой-либо узел аккордов уже запущен (если пустой сервер имен отвечает, то будут созданы два кольца аккордов. Есть ли способ убить сервер имен, если он пуст?
Мой код в Python3. Спасибо

1 ответ

Решение

Сервер имен Pyro предполагает, что он работает все время: вы никогда не знаете, будет ли кто-то чуть позже, кто захочет зарегистрировать новое имя. Если вам действительно нужно это для автоматического выключения, вам придется либо обернуть сервер имен по умолчанию в какой-то пользовательский код, либо использовать какой-либо сторожевой процесс, который убивает сервер имен, если он обнаруживает, что у него 0 записей.

Вы можете получить количество записей с помощью обычного Pyro-вызова к серверу имен: ns.count(), По понятным причинам невозможно удаленно завершить работу сервера имен с помощью такого вызова Pyro API, поэтому требуется процесс наблюдения.

Другие вопросы по тегам