@@ -59,13 +59,13 @@ def is_servers_update(self, fd, version):
5959 return new_version , None
6060
6161 def get_servers (self , fd , num ):
62- if fd not in self ._fd_to_service_name :
62+ service_name = self ._fd_to_service_name .get (fd )
63+ if service_name is None :
6364 # not register
6465 return []
65- service_name = self ._fd_to_service_name [fd ]
6666
6767 if service_name not in self ._service_name_to_servers or \
68- self ._service_name_to_update [ service_name ] is True :
68+ self ._service_name_to_update . get ( service_name , False ) :
6969 self ._refresh_service (service_name )
7070
7171 return list (self ._fd_to_servers [fd ])
@@ -85,12 +85,11 @@ def add_service_name(self, fd, service_name, num):
8585 self ._service_name_to_update [service_name ] = True
8686
8787 def rm_service_name (self , fd ):
88- # client maybe exit before register
89- if fd not in self ._fd_to_service_name :
88+ service_name = self ._fd_to_service_name .get (fd )
89+ if service_name is None :
90+ # client maybe exit before register
9091 return
9192
92- service_name = self ._fd_to_service_name [fd ]
93-
9493 with self ._mutex :
9594 if service_name in self ._service_name_to_fds :
9695 try :
@@ -141,7 +140,7 @@ def _refresh_service(self, service_name):
141140
142141 # no change
143142 if len (rm_servers ) == 0 and len (add_servers ) == 0 and \
144- self ._service_name_to_update [ service_name ] is False :
143+ not self ._service_name_to_update . get ( service_name , False ) :
145144 return
146145 self ._service_name_to_update [service_name ] = False
147146 update_fd = set ()
@@ -182,7 +181,7 @@ def _refresh_service(self, service_name):
182181 # assign: {fd0:32, fd1:32, fd2:32}
183182 server_max_connect = int ((fd_num + server_num - 1 ) / server_num )
184183 fd_max_connect = max (1 , int (server_num / fd_num ))
185- #fd_max_connect = int((server_num + fd_num - 1) / fd_num)
184+ # fd_max_connect = int((server_num + fd_num - 1) / fd_num)
186185 print ('fd_num={}, server_num={}, smax={}, mcon={}' .format (
187186 fd_num , server_num , server_max_connect , fd_max_connect ))
188187
@@ -253,9 +252,17 @@ def _refresh(self):
253252 except KeyError :
254253 pass
255254
256- time .sleep (2 )
255+ time .sleep (3 )
256+
257+ def refresh (self ):
258+ while True :
259+ try :
260+ self ._refresh ()
261+ except Exception as e :
262+ sys .stderr .write (str (e ) + '\n ' )
263+ time .sleep (6 )
257264
258265 def start (self ):
259- self ._thread = threading .Thread (target = self ._refresh )
266+ self ._thread = threading .Thread (target = self .refresh )
260267 self ._thread .daemon = True
261268 self ._thread .start ()
0 commit comments