@@ -179,13 +179,15 @@ def finish(self):
179
179
180
180
181
181
class HttpWorker (object ):
182
+ max_payload = 128 * 1024
183
+
182
184
def __init__ (self , logger , ip_manager , config , ssl_sock , close_cb , retry_task_cb , idle_cb , log_debug_data ):
183
185
self .logger = logger
184
186
self .ip_manager = ip_manager
185
187
self .config = config
186
188
self .ssl_sock = ssl_sock
187
- self .rtt = ssl_sock .handshake_time
188
- self .speed = 200
189
+ self .rtt = ssl_sock .handshake_time * 0.001
190
+ self .speed = 5000000
189
191
self .ip_str = ssl_sock .ip_str
190
192
self .close_cb = close_cb
191
193
self .retry_task_cb = retry_task_cb
@@ -195,7 +197,8 @@ def __init__(self, logger, ip_manager, config, ssl_sock, close_cb, retry_task_cb
195
197
self .keep_running = True
196
198
self .processed_tasks = 0
197
199
self .continue_fail_tasks = 0
198
- self .speed_history = []
200
+ self .rtt_history = [self .rtt ,]
201
+ self .speed_history = [self .speed , self .speed , self .speed ]
199
202
self .last_recv_time = self .ssl_sock .create_time
200
203
self .last_send_time = self .ssl_sock .create_time
201
204
self .life_end_time = self .ssl_sock .create_time + \
@@ -207,6 +210,7 @@ def __str__(self):
207
210
o += " running: %s\r \n " % (self .keep_running )
208
211
o += " processed_tasks: %d\r \n " % (self .processed_tasks )
209
212
o += " continue_fail_tasks: %s\r \n " % (self .continue_fail_tasks )
213
+ o += " rtt_history: %s\r \n " % (self .rtt_history )
210
214
o += " speed_history: %s\r \n " % (self .speed_history )
211
215
if self .version != "1.1" :
212
216
o += "streams: %d\r \n " % len (self .streams )
@@ -215,13 +219,26 @@ def __str__(self):
215
219
o += " score: %f\r \n " % (self .get_score ())
216
220
return o
217
221
222
+ def update_rtt (self , rtt ):
223
+ self .rtt_history .append (rtt )
224
+ if len (self .rtt_history ) > 10 :
225
+ self .rtt_history .pop (0 )
226
+ # self.rtt = sum(self.rtt_history) / len(self.rtt_history)
227
+
228
+ def update_speed (self , speed ):
229
+ self .speed_history .append (speed )
230
+ if len (self .speed_history ) > 10 :
231
+ self .speed_history .pop (0 )
232
+ self .speed = sum (self .speed_history ) / len (self .speed_history )
233
+
218
234
def update_debug_data (self , rtt , sent , received , speed ):
219
- self .rtt = rtt
220
- if sent + received > 10000 :
221
- self .speed_history .append (speed )
222
- if len (self .speed_history ) > 10 :
223
- self .speed_history .pop (0 )
224
- self .speed = sum (self .speed_history ) / len (self .speed_history )
235
+ # if sent + received > 10000:
236
+ # self.speed_history.append(speed)
237
+ # if len(self.speed_history) > 10:
238
+ # self.speed_history.pop(0)
239
+ # self.speed = sum(self.speed_history) / len(self.speed_history)
240
+ # else:
241
+ # self.rtt = rtt
225
242
226
243
self .log_debug_data (rtt , sent , received )
227
244
@@ -243,13 +260,20 @@ def close(self, reason):
243
260
244
261
def get_score (self ):
245
262
# The smaller, the better
246
- score = (50 - (self .speed / 6.0 )) + (self .rtt / 20.0 )
263
+
264
+ score = self .rtt
247
265
if self .version != "1.1" :
248
- score += len (self .streams ) * 3
266
+ response_body_len = self .max_payload
267
+ for _ , stream in self .streams .items ():
268
+ if stream .response_body_len == 0 :
269
+ response_body_len += self .max_payload
270
+ else :
271
+ response_body_len += stream .response_body_len - stream .task .body_len
272
+ score += response_body_len / self .speed
249
273
250
274
if self .config .show_state_debug :
251
- self .logger .debug ("get_score %s, speed:%d rtt:%d stream_num:%d score:%d " , self .ip_str ,
252
- self .speed , self .rtt , len (self .streams ), score )
275
+ self .logger .debug ("get_score %s, speed:%f rtt:%d stream_num:%d score:%f " , self .ip_str ,
276
+ self .speed * 0.000001 , self .rtt * 1000 , len (self .streams ), score )
253
277
254
278
return score
255
279
0 commit comments