python - 具有大型结果集的 API 响应

标签 python rest bigdata

我们有一个 REST API,作为其中的一部分,我们为客户提供了多个 API 来绘制分析报告。一些非常大的查询可能需要 5 到 10 分钟才能完成,并且可以返回 50mb 到 150mb 范围内的响应。

目前,客户端只需等待响应。我们不确定这是否真的是最佳实践,或者是否应该以其他方式处理此类复杂/大型查询和响应。对于当前最佳实践有任何建议吗?

注意:该 API 将由构建大型报告的自动化流程调用,因此我们不确定标准分页是否有效或理想。

最佳答案

如果您需要处理长时间运行的任务,从客户端的角度来看,最好按如下方式异步处理它。

客户端发送 POST 请求,服务器创建新资源(或者可以立即启动后台处理)并返回 HTTP 202 Accepted 以及任务的表示(例如状态、开始时间、预期结束时间等)在 Content-Location header 中添加任务 URL,以便客户端可以跟踪它。

客户端可以向指定的URL发送GET请求来获取状态。服务器可以返回以下响应。

尚未完成

服务器返回 HTTP 200 OK 以及任务资源,以便客户端可以检查状态。

完成

服务器返回 HTTP 303 See Other 和 Location header ,其中包含显示任务结果的资源的 URL。

错误

服务器返回 HTTP 200 OK 以及描述错误的任务资源

关于python - 具有大型结果集的 API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824677/

相关文章:

python - 如何列出包中的所有类和方法/函数 - 具有完整的文件夹/文件路径?

python - OpenCV:用轮廓上的大多数点拟合椭圆(而不是最小二乘法)

iPhone RESTful Web 服务

java - swagger oauth 明白了,那么现在怎么办?

python - 使用 urllib 下载 pdf?

python - 使用 python 将多个 .doc 转换为 .docx 文件

windows - 适用于 Windows 的图形化 HTTP 客户端

hadoop - jobconf 和 job 之间的基本区别是什么?

memory - Neo4j 删除内存不足的图

python - 存储和查询大量数据