in dubbo/client.py [0:0]
def _watch_children(self, event):
"""
对某个provider下的子节点进行监听,一旦provider发生了变化则对本地缓存进行更新
:param event:
:return:
"""
path = event.path
logger.debug('zookeeper node changed: {}'.format(path))
interface = path.split('/')[2]
providers = self.zk.get_children(path, watch=self._watch_children)
providers = filter(lambda provider: provider['scheme'] == 'dubbo', map(parse_url, providers))
if not providers:
logger.debug('no providers for interface {}'.format(interface))
self.hosts[interface] = []
return
self.hosts[interface] = map(lambda provider: provider['host'], providers)
logger.debug('{} providers: {}'.format(interface, self.hosts[interface]))