加工时间长;定期发送102处理响应的方法?

时间:2015-02-17 22:37:52

标签: ruby-on-rails ruby ruby-on-rails-4 proxy http-status-codes

我有一个Rails应用程序可能需要很长时间才能准备好对某些查询的响应。 (主要是延迟是将数据集渲染为JSON或YAML。)应用程序位于代理后面,其配置我无法改变,结果是这些长时间运行的查询往往被代理终止作为超时。分块没有帮助,因为在渲染完全完成之前没有什么东西可以分块。

Rails中是否有任何支持或已存在的方式来设置异步重复任务,该任务可以发送回102 Processing响应以保持代理满意,直到完整响应准备就绪?

真的更愿意不必实现分页语义。

我可以控制应用和客户端;这两个位都是我的代码。我可以控制代理,也无法控制应用的服务器。

非常欢迎任何建议!

1 个答案:

答案 0 :(得分:-1)

我可能会通过POST初始请求并让rails app返回相应的HTTP状态代码来解决问题。然后我在客户端有javascript,它会以合理的间隔轮询服务器以获得渲染的状态。状态操作可以返回102响应,直到处理完成。然后,您可以使用用户可以单击以下载完成文件的javascript在页面中插入链接。