1000个http同时获取请求并获取状态代码和响应时间

时间:2017-02-17 09:45:04

标签: python python-2.7 urllib2

我正在编写一个代码,通过在文件中同时发布1000个不同的HTTP请求来测试负载。请在下面找到代码。如何同时发布所有HTTP请求?另外,我不确定我写的代码是否能更好地获取响应时间和状态。我正在运行requests.get()两次以获取详细信息。有人可以通过让我知道如何同时发布HTTP请求并获得响应时间和状态代码来帮助我完成代码清理吗?请在下面找到我的代码。

import requests

urls = []

urls = [line.rstrip('\n') for line in open('urllist.rtf')]

for url in urls:
    r=requests.get(url)
    time = requests.get(url).elapsed.total_seconds()
    print url, r.status_code, time

2 个答案:

答案 0 :(得分:1)

为了使代码更清晰,我建议grequests

pip install grequests

你只需重写一些部分

from __future__ import print_function
import grequests
rs = (grequests.get(u) for u in urls)
for response in grequests.map(rs):
    print(response.status_code, response.elapsed.total_seconds())   

将响应对象作为rs中的列表获取。

答案 1 :(得分:0)

您可以使用DomainType multiple或查看threads https://scrapy.org/