0

我开发了一种方法,按以下顺序执行以下步骤:
1)通过 /gdc/md//obj/ 获取报告的元数据
2)从中获取报告定义并将其用作调用 / gdc/xtab2/executor3
3) 将该调用的结果用作调用 /gdc/exporter/executor 的有效负载
4) 对返回的 URI 执行 GET 以下载生成的 CSV

所以这一切都很好,但问题是我经常得到一个空白的 CSV 或不完整的 CSV。我的解决方法是在获取 URI 和在 URI 上实际调用 GET 之间放置一个 sleep()。但是,随着我们数据的增长,我必须不断增加延迟,即使这样也不能保证我得到完整的数据。有没有办法在调用 URI 之前确保报告已完成将数据导出到文件?

4

1 回答 1

1

问题是导出作为异步任务运行 - 在导出任务完成其工作后,在 to 的有效负载中返回的 URL 上的结果POST/gdc/exporter/executor以 的形式/gdc/exporter/result/{project-id}/{result-id})可用。

如果任务还没有完成,GET应该/gdc/exporter/result/{project-id}/{result-id}返回状态码202,表示“我们仍在导出,请稍候”。

因此,您应该定期轮询结果 URL,直到它返回200包含有效负载的状态(或40x/50x如果发生错误)。

于 2014-06-14T15:34:29.200 回答