2

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

例如,

unsent_requests = []
for param in params: # assume params is a list containing different parameters or query strings
    unsent_requests.append(grequests.get(url = url, params = param))

responses = grequests.map(unsent)

我怎么可能知道响应中的哪个响应属于 unsent_requests 的哪个请求?还是响应与未发送请求的顺序相同?

PS:response.url 没有给出任何线索,因为返回的是完全不同的 url。

4

2 回答 2

4

响应与请求的顺序相同,如使用示例所示:

>>> 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]>]
于 2016-05-28T19:10:47.917 回答
3

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

这就是响应包含原始请求的原因,您可以通过遍历 map 的结果并打印响应来查看。请求.url。

于 2017-06-30T17:01:16.543 回答