in dubbo/client.py [0:0]
def _watch_configurators(self, event):
"""
监测某个interface中provider的权重的变化信息
:param event:
:return:
"""
path = event.path
logger.debug('zookeeper node changed: {}'.format(path))
interface = path.split('/')[2]
# 试图从配置中取出权重相关的信息
configurators = self.zk.get_children(DUBBO_ZK_CONFIGURATORS.format(interface),
watch=self._watch_configurators)
if configurators:
configurators = map(parse_url, configurators)
conf = {}
for configurator in configurators:
conf[configurator['host']] = configurator['fields'].get('weight', 100)
logger.debug('{} configurators: {}'.format(interface, conf))
self.weights[interface] = conf
else:
logger.debug('No configurator for interface {}')
self.weights[interface] = {}