class RegistryClient(object, IRegistryClient): def __init__(self, update_period=10, refresh_callback=None, server_uri=None): if server_uri: self.server_uri = server_uri else: self.server_uri = SERVER_URI self.__refresh_callback = refresh_callback self.__update_period = update_period self.__socket = Socket(self.server_uri) self.__registry = Registry() self.refresh() self.__update_thread = UpdateThread(self, update_period) self.__update_thread.daemon = True self.__update_thread.start() def get(self, key): return self.__registry.get(key) def set(self, key, value): return self.__registry.set(key, value) def remove(self, key): return self.__registry.remove(key) def refresh(self): current_version = self.__socket.send('get_version') if self.__registry.get_version() != current_version: self._load() if self.__refresh_callback: self.__refresh_callback(self) def _load(self): try: (version, values) = self.__socket.send('get_values') self.__registry.set_values(values, version) except Exception, err: print "Ops:", err pass