【问题标题】:API Responses with large result sets具有大型结果集的 API 响应
【发布时间】:2014-02-17 21:07:31
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以以异步方式执行此操作,也可以使用批处理技术。

标签: python rest bigdata


【解决方案1】:

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

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

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

尚未完成

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

完成

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

错误

服务器返回 HTTP 200 OK 并带有描述错误的任务资源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多