@@ -221,6 +221,8 @@ def keep_connection_daemon(self):
221221 time .sleep (5 )
222222 continue
223223
224+ if self .config .show_state_debug :
225+ self .logger .debug ("call _connect_process from keep_connection_daemon" )
224226 self ._connect_process ()
225227
226228 def _need_more_ip (self ):
@@ -230,13 +232,17 @@ def _need_more_ip(self):
230232 return False
231233
232234 def _create_more_connection (self ):
235+ if self .config .show_state_debug :
236+ self .logger .debug ("_create_more_connection" )
233237 if not self .connecting_more_thread :
234238 with self .thread_num_lock :
235239 self .connecting_more_thread = threading .Thread (target = self ._create_more_connection_worker ,
236240 name = "%s_conn_manager__create_more_conn" % self .logger .name )
237241 self .connecting_more_thread .start ()
238242
239243 def _create_more_connection_worker (self ):
244+ if self .config .show_state_debug :
245+ self .logger .debug ("_create_more_connection_worker" )
240246 if self .start_connect_time and self .start_connect_time + 30 < time .time ():
241247 self .start_connect_time = 0
242248 self .config .https_max_connect_thread += 1
@@ -260,14 +266,20 @@ def _create_more_connection_worker(self):
260266 self .connecting_more_thread = None
261267
262268 def _connect_thread (self , sleep_time = 0 ):
269+ if self .config .show_state_debug :
270+ self .logger .debug ("_connect_thread" )
271+
263272 if sleep_time > 0.1 :
273+ self .logger .debug ("_connect_thread sleep %f" , sleep_time )
264274 time .sleep (sleep_time )
265275
266276 try :
267277 while self .running and self ._need_more_ip () and time .time () - self .no_ip_time > 10 :
268278 if self .new_conn_pool .qsize () > self .config .https_connection_pool_max :
269279 break
270280
281+ if self .config .show_state_debug :
282+ self .logger .debug ("call _connect_process from _connect_thread" )
271283 self .start_connect_time = time .time ()
272284 self ._connect_process ()
273285 self .start_connect_time = 0
@@ -277,19 +289,20 @@ def _connect_thread(self, sleep_time=0):
277289 self .thread_num_lock .release ()
278290
279291 def _connect_process (self ):
292+ if self .config .show_state_debug :
293+ self .logger .debug ("_connect_process" )
280294 try :
281295 host_info = self .ip_manager .get_ip_sni_host ()
282296 if not host_info :
283297 self .no_ip_time = time .time ()
284298 with self .no_ip_lock :
285- # self.logger.warning("not enough ip")
286- time .sleep (10 )
299+ self .logger .warning ("not enough ip" )
300+ time .sleep (1 )
287301 return None
288302
289303 # self.logger.debug("create ssl conn %s", ip_str)
290304 ssl_sock = self ._create_ssl_connection (host_info )
291305 if not ssl_sock :
292- time .sleep (1 )
293306 return None
294307
295308 self .new_conn_pool .put ((ssl_sock .handshake_time , ssl_sock ))
@@ -303,6 +316,9 @@ def _connect_process(self):
303316 self .logger .exception ("connect_process except:%r" , e )
304317
305318 def _connect_ssl (self , ip_str , sni , host , close_cb , queue ):
319+ if self .config .show_state_debug :
320+ self .logger .debug ("_connect_ssl" )
321+
306322 try :
307323 ssl_sock = self .connect_creator .connect_ssl (ip_str , sni , host , close_cb = close_cb )
308324 queue .put (ssl_sock )
@@ -311,6 +327,9 @@ def _connect_ssl(self, ip_str, sni, host, close_cb, queue):
311327 queue .put (e )
312328
313329 def _create_ssl_connection (self , host_info ):
330+ if self .config .show_state_debug :
331+ self .logger .debug ("_create_ssl_connection" )
332+
314333 ip_str = host_info ["ip_str" ]
315334 sni = host_info ["sni" ]
316335 host = host_info ["host" ]
@@ -337,7 +356,7 @@ def _create_ssl_connection(self, host_info):
337356 return ssl_sock
338357 except socket .error as e :
339358 if str (e ) in ["no host" , "timeout" ]:
340- time . sleep ( 3 )
359+ pass
341360 elif not self .check_local_network .is_ok (ip_str ):
342361 self .logger .debug ("connect %s network fail, %r" , ip_str , e )
343362 time .sleep (1 )
@@ -364,15 +383,20 @@ def get_ssl_connection(self, timeout=30):
364383 end_time = time .time () + timeout
365384 try :
366385 while self .running :
367- ret = self .new_conn_pool .get (block = True , timeout = 1 )
386+ ret = self .new_conn_pool .get (block = False )
387+ if not ret :
388+ self ._create_more_connection ()
389+ ret = self .new_conn_pool .get (block = True , timeout = 1 )
390+
368391 if ret :
369392 handshake_time , ssl_sock = ret
370393 if time .time () - ssl_sock .last_use_time < self .config .https_keep_alive - 1 :
371- # self.logger.debug("new_conn_pool.get:%s handshake:%d", ssl_sock.ip, handshake_time)
394+ if self .config .show_state_debug :
395+ self .logger .debug ("new_conn_pool.get:%s handshake:%d" , ssl_sock .ip , handshake_time )
372396 return ssl_sock
373397 else :
374- # self.logger.debug ("new_conn_pool.get:%s handshake:%d timeout.", ssl_sock.ip, handshake_time)
375- self .ip_manager .report_connect_closed (ssl_sock .ip_str , ssl_sock .sni , "get_timeout " )
398+ self .logger .warn ("new_conn_pool.get:%s handshake:%d timeout." , ssl_sock .ip , handshake_time )
399+ self .ip_manager .report_connect_closed (ssl_sock .ip_str , ssl_sock .sni , "get_ssl_timeout " )
376400 ssl_sock .close ()
377401 else :
378402 if time .time () > end_time :
0 commit comments