首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用grequests.map()的延迟的G请求

不使用grequests.map()的延迟的G请求
EN

Stack Overflow用户
提问于 2014-08-25 18:25:16
回答 1查看 2.4K关注 0票数 5

这是我第一次尝试使用不太理想的文档和示例代码库,所以请原谅我。我对请求库有一点经验,但我需要每秒钟将不同的请求发送到特定的地址:

  • 在不等待第一个请求完成的情况下,在每个响应进入时处理它们。
  • 答复的内容需要分开分析
  • 在限制连接总数的同时

我想不出如何同时满足这些条件。grequests.map()会给我我想要的回复的内容,但只有在它们都完成之后才会批处理。grequests.send()似乎只返回一个不包含网页html文本的响应对象。(我对grequests.send()的看法可能是错误的,但我还没有找到从该对象提取内容的示例)

下面是我到目前为止掌握的代码:

代码语言:javascript
复制
import grequests
from time import sleep

def print_res(res, **kwargs):
    print res
    print kwargs

headers =   {'User-Agent':'Python'}

req = grequests.get('http://stackoverflow.com', headers=headers, hooks=dict(response=print_res), verify=False)

for i in range(3):
    job = grequests.send(req, grequests.Pool(10))
    sleep(1)

我得到的回应是:

代码语言:javascript
复制
1
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}
2
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}
3
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}

我尝试过使用req.contentjob.content访问html响应,但两者都没有工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 18:25:16

当然,在写这个问题时,我意识到我没有尝试访问res.content,这正是我所需要的。

经验教训:返回到grequests.get()语句中的响应钩子的对象具有一个content属性,该属性包含从服务器发送的响应文本。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25492110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档