2222import threading
2323import time
2424import random
25- from urllib import quote
25+ from urllib . parse import quote
2626
2727from kazoo .client import KazooClient
2828from kazoo .protocol .states import KazooState
@@ -120,16 +120,17 @@ def __init__(self, hosts, application_name='search_platform'):
120120 :param hosts: Zookeeper的地址
121121 :param application_name: 当前客户端的名称
122122 """
123+ self .hosts = {}
124+ self .weights = {}
125+ self .application_name = application_name
126+ self .lock = threading .Lock ()
127+
123128 zk = KazooClient (hosts = hosts )
124129 # 对zookeeper连接状态的监控
125130 zk .add_listener (self .state_listener )
126131 zk .start ()
127132
128133 self .zk = zk
129- self .hosts = {}
130- self .weights = {}
131- self .application_name = application_name
132- self .lock = threading .Lock ()
133134
134135 def state_listener (self , state ):
135136 """
@@ -186,11 +187,11 @@ def _get_providers_from_zk(self, path, interface):
186187 :return:
187188 """
188189 providers = self .zk .get_children (path , watch = self ._watch_children )
189- providers = filter (lambda provider : provider ['scheme' ] == 'dubbo' , map (parse_url , providers ))
190+ providers = list ( filter (lambda provider : provider ['scheme' ] == 'dubbo' , list ( map (parse_url , providers )) ))
190191 if not providers :
191192 raise RegisterException ('no providers for interface {}' .format (interface ))
192193 self ._register_consumer (providers )
193- self .hosts [interface ] = map (lambda provider : provider ['host' ], providers )
194+ self .hosts [interface ] = list ( map (lambda provider : provider ['host' ], providers ) )
194195
195196 def _get_configurators_from_zk (self , interface ):
196197 """
@@ -200,7 +201,7 @@ def _get_configurators_from_zk(self, interface):
200201 """
201202 configurators = self .zk .get_children (DUBBO_ZK_CONFIGURATORS .format (interface ), watch = self ._watch_configurators )
202203 if configurators :
203- configurators = map (parse_url , configurators )
204+ configurators = list ( map (parse_url , configurators ) )
204205 conf = {}
205206 for configurator in configurators :
206207 conf [configurator ['host' ]] = configurator ['fields' ].get ('weight' , 100 ) # 默认100
@@ -217,12 +218,12 @@ def _watch_children(self, event):
217218 interface = path .split ('/' )[2 ]
218219
219220 providers = self .zk .get_children (path , watch = self ._watch_children )
220- providers = filter (lambda provider : provider ['scheme' ] == 'dubbo' , map (parse_url , providers ))
221+ providers = list ( filter (lambda provider : provider ['scheme' ] == 'dubbo' , list ( map (parse_url , providers )) ))
221222 if not providers :
222223 logger .debug ('no providers for interface {}' .format (interface ))
223224 self .hosts [interface ] = []
224225 return
225- self .hosts [interface ] = map (lambda provider : provider ['host' ], providers )
226+ self .hosts [interface ] = list ( map (lambda provider : provider ['host' ], providers ) )
226227 logger .debug ('{} providers: {}' .format (interface , self .hosts [interface ]))
227228
228229 def _watch_configurators (self , event ):
@@ -239,7 +240,7 @@ def _watch_configurators(self, event):
239240 configurators = self .zk .get_children (DUBBO_ZK_CONFIGURATORS .format (interface ),
240241 watch = self ._watch_configurators )
241242 if configurators :
242- configurators = map (parse_url , configurators )
243+ configurators = list ( map (parse_url , configurators ) )
243244 conf = {}
244245 for configurator in configurators :
245246 conf [configurator ['host' ]] = configurator ['fields' ].get ('weight' , 100 )
@@ -303,7 +304,7 @@ def _routing_with_wight(self, interface):
303304 hosts_weight .append (int (weights .get (host , 100 )))
304305
305306 hit = random .randint (0 , sum (hosts_weight ) - 1 )
306- for i in xrange (len (hosts )):
307+ for i in range (len (hosts )):
307308 if hit <= sum (hosts_weight [:i + 1 ]):
308309 return hosts [i ]
309310
0 commit comments