我尝试了 python 请求库 文档中提供的示例。
使用 async.map(rs)
,我得到响应代码,但我想获取请求的每个页面的内容。例如,这不起作用:
out = async.map(rs)
print out[0].content
原文由 trbck 发布,翻译遵循 CC BY-SA 4.0 许可协议
我尝试了 python 请求库 文档中提供的示例。
使用 async.map(rs)
,我得到响应代码,但我想获取请求的每个页面的内容。例如,这不起作用:
out = async.map(rs)
print out[0].content
原文由 trbck 发布,翻译遵循 CC BY-SA 4.0 许可协议
async
现在是一个独立的模块: grequests
。
请参阅此处: https ://github.com/kennethreitz/grequests
还有: 通过 Python 发送多个 HTTP 请求的理想方法?
$ pip install grequests
建立一个堆栈:
import grequests
urls = [
'http://www.heroku.com',
'http://tablib.org',
'http://httpbin.org',
'http://python-requests.org',
'http://kennethreitz.com'
]
rs = (grequests.get(u) for u in urls)
发送堆栈
grequests.map(rs)
结果看起来像
[<Response [200]>, <Response [200]>, <Response [200]>, <Response [200]>, <Response [200]>]
grequests 似乎没有为并发请求设置限制,即当多个请求被发送到同一台服务器时。
原文由 outforawhile 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
笔记
以下答案 不适 用于请求 v0.13.0+。编写此问题后,异步功能已移至 grequests 。但是,您可以将
requests
替换为下面的grequests
,它应该可以工作。我留下这个答案是为了反映关于使用 requests < v0.13.0 的原始问题。
要使用
async.map
异步 执行多项任务,您必须:async.map
例子: