def work_driver(arg_tup):
global PROGRESS_CTR_T, MEASURING
global REQ_ARRS, COST_ARRS, CLASS_ARRS
nreqs, host_str, req_arr_ix = arg_tup
req_arr = REQ_ARRS[req_arr_ix]
cost_arr = COST_ARRS[req_arr_ix]
class_arr = CLASS_ARRS[req_arr_ix]
success = 0
miss = 0
costs = 0
NCURL = 128
curl_hands = []
for i in range(NCURL):
c = pycurl.Curl()
curl_hands.append(c)
n = 0
# my_output = open(TMP_FILE_NAME % req_arr_ix, 'w')
for ix, item in enumerate(req_arr):
c = curl_hands[ix % NCURL]
try:
url = host_str % (item, cost_arr[ix], class_arr[ix])
t_s = time.time()
c.setopt(c.URL, url)
resp = StringIO()
headers = StringIO()
c.setopt(c.WRITEFUNCTION, resp.write)
c.setopt(c.HEADERFUNCTION, headers.write)
c.setopt(pycurl.CONNECTTIMEOUT, 20)
c.setopt(pycurl.TIMEOUT, 20)
c.perform()
t_end = time.time()
if c.getinfo(c.RESPONSE_CODE) == 200:
success += 1
is_hit, cost = handle_response(resp, headers)
if not is_hit:
miss += 1
costs += cost
# my_output.write("%f, %f\n" % (t_end, (t_end - t_s)))
# my_output.flush()
except Exception as e:
print e
pass
PROGRESS_CTR_T[req_arr_ix] = success
# my_output.close()
return (success, miss, costs)
评论列表
文章目录