b_d*_*dev 7 python-requests grequests
我正在使用grequests python库将GET请求异步发送到我们的服务器.
我无法弄清楚如何在发出的请求池中获得每个请求的服务器响应时间?
unsentrequests=(grequests.get(u) for u in self.urls) # make a pool of requests
responses=grequests.map(unsentrequests) # send the requests asynchronously
Run Code Online (Sandbox Code Playgroud)
要获取请求 - 响应对的开始时间,我可以执行以下操作:
grequests.get(u,headers={'start':time.time())
print responses[0].request.headers['start_time']
Run Code Online (Sandbox Code Playgroud)
但是我如何才能收到回复的时间?
rab*_*ben 14
grequests,比如requests,支持一个hook关键字参数,您可以在其中分配一个对响应对象执行某些操作的函数:
def do_something(response):
print response.status_code
unsentrequests=(grequests.get(u, hooks = {'response' : do_something}) for u in self.urls)
responses=grequests.map(unsentrequests)
Run Code Online (Sandbox Code Playgroud)
我更喜欢requests直接在循环中使用gevent以获得更明确的代码:
import gevent.monkey
gevent.monkey.patch_socket()
from gevent.pool import Pool
import requests
def check_urls(urls):
def fetch(url):
response = requests.request('GET', url, timeout=5.0)
print "Status: [%s] URL: %s" % (response.status_code, url)
pool = Pool(20)
for url in urls:
pool.spawn(fetch, url)
pool.join()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11305 次 |
| 最近记录: |