@@ -177,7 +177,8 @@ def response_fail(self, reason=""):
177177 res = simple_http_client .BaseResponse (body = err_text )
178178 res .task = self
179179 res .worker = self .worker
180- self .queue .put (res )
180+ if self .queue :
181+ self .queue .put (res )
181182 self .finish ()
182183
183184 def finish (self ):
@@ -198,7 +199,6 @@ def __init__(self, logger, ip_manager, config, ssl_sock, close_cb, retry_task_cb
198199 self .ssl_sock = ssl_sock
199200 self .handshake = ssl_sock .handshake_time * 0.001
200201 self .rtt = ssl_sock .handshake_time * 0.001
201- self .speed = 15000000
202202 self .streams = []
203203 self .ip_str = ssl_sock .ip_str
204204 self .close_cb = close_cb
@@ -213,7 +213,6 @@ def __init__(self, logger, ip_manager, config, ssl_sock, close_cb, retry_task_cb
213213 self .continue_fail_tasks = 0
214214 self .rtt_history = [self .rtt ,]
215215 self .adjust_history = []
216- self .speed_history = [self .speed , self .speed , self .speed ]
217216 self .last_recv_time = self .ssl_sock .create_time
218217 self .last_send_time = self .ssl_sock .create_time
219218 self .life_end_time = self .ssl_sock .create_time + \
@@ -228,12 +227,11 @@ def __str__(self):
228227 o += " continue_fail_tasks: %s\r \n " % (self .continue_fail_tasks )
229228 o += " handshake: %f \r \n " % self .handshake
230229 o += " rtt_history: %s\r \n " % (self .rtt_history )
231- o += " speed_history: %s\r \n " % (self .speed_history )
232230 o += " adjust_history: %s\r \n " % (self .adjust_history )
233231 if self .version != "1.1" :
234232 o += "streams: %d\r \n " % len (self .streams )
235233 o += " rtt: %f\r \n " % (self .rtt )
236- o += " speed: %f\r \n " % (self .speed )
234+ o += " speed: %f\r \n " % (self .ip_manager . get_speed ( self . ip_str ) )
237235 o += " score: %f\r \n " % (self .get_score ())
238236 return o
239237
@@ -250,20 +248,9 @@ def update_rtt(self, rtt, predict_rtt=None):
250248 self .adjust_history .pop (0 )
251249
252250 def update_speed (self , speed ):
253- self .speed_history .append (speed )
254- if len (self .speed_history ) > 10 :
255- self .speed_history .pop (0 )
256- self .speed = sum (self .speed_history ) / len (self .speed_history )
251+ self .ip_manager .update_speed (self .ip_str , speed )
257252
258253 def update_debug_data (self , rtt , sent , received , speed ):
259- # if sent + received > 10000:
260- # self.speed_history.append(speed)
261- # if len(self.speed_history) > 10:
262- # self.speed_history.pop(0)
263- # self.speed = sum(self.speed_history) / len(self.speed_history)
264- # else:
265- # self.rtt = rtt
266-
267254 self .log_debug_data (rtt , sent , received )
268255 return
269256
@@ -296,23 +283,23 @@ def get_score(self):
296283 if self .processed_tasks == 0 and len (self .streams ) == 0 :
297284 score /= 3
298285
286+ speed = self .ip_manager .get_speed (self .ip_str )
299287 if self .version == "1.1" :
300- score += self .max_payload / self .speed
301- return score
302-
303- response_body_len = self .max_payload
304- for _ , stream in self .streams .items ():
305- if stream .response_body_len == 0 :
306- response_body_len += self .max_payload
307- else :
308- response_body_len += stream .response_body_len - stream .task .body_len
309- score += response_body_len / self .speed
288+ score += self .max_payload / speed
289+ else :
290+ response_body_len = self .max_payload
291+ for _ , stream in self .streams .items ():
292+ if stream .response_body_len == 0 :
293+ response_body_len += self .max_payload
294+ else :
295+ response_body_len += stream .response_body_len - stream .task .body_len
296+ score += response_body_len / speed
310297
311- score += len (self .streams ) * 0.06
298+ score += len (self .streams ) * 0.06
312299
313300 if self .config .show_state_debug :
314301 self .logger .debug ("get_score %s, speed:%f rtt:%d stream_num:%d score:%f" , self .ip_str ,
315- self . speed * 0.000001 , self .rtt * 1000 , len (self .streams ), score )
302+ speed * 0.000001 , self .rtt * 1000 , len (self .streams ), score )
316303
317304 return score
318305
0 commit comments