def _watch_children()

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]))