API响应大型结果集

时间:2014-02-17 09:01:54

标签: python rest bigdata

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

目前,客户只是等待响应。我们不确定这是否真的是最好的做法,或者是否是这样复杂/大型的查询和答复应以另一种方式处理。关于当前最佳实践的任何建议都会受到赞赏吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

尚未完成

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

完成

服务器返回HTTP 303请参阅其他和位置标头,其中包含显示任务结果的资源的URL。

错误

服务器使用描述错误的任务资源

返回HTTP 200 OK