请求响应的顺序与请求的顺序相同吗?

时间:2016-05-28 18:16:35

标签: python python-requests grequests

我正在使用grequests使用相同的url但不同的参数从网站异步下载数据。

例如,

<AndroidResgenExtraArgs>--no-crunch</AndroidResgenExtraArgs>

我怎样才能知道响应中的哪个响应属于来自unsent_requests的请求?或者响应的顺序与未发送的请求的顺序相同吗?

PS:response.url没有提供任何线索,因为完全不同的网址会返回。

2 个答案:

答案 0 :(得分:4)

响应与请求的顺序相同,如usage example

所示
>>> reqs = [
...    grequests.get('http://httpbin.org/delay/1', timeout=0.001),
...    grequests.get('http://fakedomain/'),
...    grequests.get('http://httpbin.org/status/500')]
>>> grequests.map(reqs, exception_handler=exception_handler)
Request failed
Request failed
[None, None, <Response [500]>]

答案 1 :(得分:3)

不,它们不是,异步请求的本质意味着尽管按顺序处理,但实际的响应并不保证是有序的。

这就是响应包含原始请求的原因,您可以通过迭代地图结果和打印响应来查看。请求 .url。