【问题标题】:Python: Running multiple http requests concurrently based on an initial request?Python:基于初始请求同时运行多个 http 请求?
【发布时间】:2017-09-03 10:36:48
【问题描述】:

目前我正在尝试从具有 2 个端点的 API 获取:

GET /AllUsers 
GET /user_detail/{id}

为了获取所有用户的详细信息,我必须调用GET /AllUsers,并循环遍历ID 以逐一调用GET /user_detail/{id} 端点。我想知道是否可以有多个GET /user_detail/{id}通话同时运行?或者也许有更好的方法?

【问题讨论】:

  • 你可以使用here中描述的线程
  • 结构似乎很大程度上取决于您希望对检索到的每个 ID 做什么。检索到每个用户后会发生什么?
  • @JacobIRR:我正在尝试将这些数据与我的本地数据库同步,因此对于每个用户,我会检查数据是否已更改,然后相应地更新我的本地数据库。

标签: python apache http nginx concurrency


【解决方案1】:

这听起来像是 grequests 的一个很好的用例

import grequests

urls = [f'http://example.com/user_detail/{id}' for id in range(10)]

rs = (grequests.get(u) for u in urls)
responses = grequests.map(rs)

编辑:作为处理响应以检索 json 的示例,您可以:

data = []
for response in responses:
    data.append(response.json())

【讨论】:

  • 感谢您的建议,但是文档没有说明如何处理每个请求的响应,grequests 可以吗?
  • 您打算如何处理每个响应? grequests.map(rs) 返回响应列表
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多