websim_plus_classes.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:hyperbolic-caching 作者: kantai 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号