python实现http请求并发_python中从urllib2发送并行/并发http请求

我试图发送与web服务并行的httppost请求。具体地说,我想从响应时间的角度对并发请求环境下的web服务进行负载测试。所以我计划使用thread和urllib2来实现这个任务——每个线程都通过urllib2执行一个http请求。在

我是这样做的:import urllib2 as u2

import time

from threading import Thread

def run_job():

try:

req = u2.Request(

url = **the web service url**,

data = **data send to the web service**,

headers = **http header web service requires**,

)

opener = u2.build_opener()

u2.install_opener(opener)

start_time = time.time()

response = u2.urlopen(req, timeout = 60)

end_time = time.time()

html = response.read()

code = response.code

response.close()

if code == 200:

print end_time - start_time

else:

print -1

except Exception, e:

print -2

if __name__ == "__main__":

N = 1

if len(sys.argv) > 1:

N = int(sys.argv[1])

threads = []

for i in range(1, N):

t = Thread(target=run_job, args=())

threads.append(t)

[x.start() for x in threads]

[x.join() for x in threads]

同时,我使用fidller2来捕获发出的请求。Fiddler是一个编写http请求并发送出去的工具,它还可以通过主机捕获http请求。在

当我看到fidler2时,这些请求是一个接一个地发出的,而不是一次全部发出,这是我所期望的。如果fiddler中所描述的是正确的(请求是一个接一个地发出的),据我所知,我想一定有一些请求正在等待的队列。有人能解释一下这背后发生了什么吗?如果可能的话,如何实现真正的并行请求?在

另外,我在请求发生之前和之后放置了两个时间戳,如果在urllib2.urlopen执行之后请求在队列中等待,那么两个时间戳的增量包括在等待队列中花费的时间。有没有可能更精确地测量请求发出和接收之间的时间?在

非常感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值