in dubbo_client/registry.py [0:0]
def _compare_swap_nodes(self, interface, nodes):
"""
比较,替换现有内存中的节点信息,节点url类似如下
jsonrpc://192.168.2.1:38080/com.ofpay.demo.api.UserProvider?
anyhost=true&application=demo-provider&default.timeout=10000&dubbo=2.4.10&
environment=product&interface=com.ofpay.demo.api.UserProvider&
methods=getUser,queryAll,queryUser,isLimit&owner=wenwu&pid=61578&
side=provider×tamp=1428904600188
首先将url转为ServiceUrl对象,然保持到缓存中
:param nodes: 节点列表
:return: 不需要返回
"""
if self._mutex.acquire():
# 存在并发问题,需要线程锁
try:
# 如果已经存在,首先删除原有的服务的集合
if interface in self._service_providers:
del self._service_providers[interface]
logger.debug("delete node {0}".format(interface))
for child_node in nodes:
node = urllib.unquote(child_node).decode('utf8')
logger.debug('child of node is {0}'.format(node))
if node.startswith('jsonrpc'):
service_url = ServiceURL(node)
self._add_node(interface, service_url)
except Exception as e:
logger.warn('swap json-rpc provider error %s', str(e))
finally:
self._mutex.release()