Rails 3:通过API将大量数据返回给用户

时间:2011-06-26 18:56:44

标签: ruby-on-rails-3 delayed-job

我的应用有一个用户可以请求数据的API。有时,数据需要时间来处理并破坏我的代码。

我需要一个解决方案,我正在考虑使用delayed_job,但我不确定这是如何工作的。如果用户提出请求,我需要给他一个答案。即使我在后台处理数据,调用仍然需要等到作业返回。

这是什么解决方案?我不知道该怎么做。

由于

2 个答案:

答案 0 :(得分:3)

Heroku有一个30 second timeout,这就是你的请求失败的原因(你的heroku日志中可能是H12或H13)。

有三种方法可以解决这个问题。

  1. 通过发送空白数据保持连接处于打开状态。 你需要在前30秒内和之后的55秒内做出响应。使用两者之间的时间来处理数据。发送空格不应影响浏览器读取响应的能力。

  2. <强>回调 让用户在初始请求中提供回调URL。处理完数据后,请使用您的回复点击回调网址。

  3. <强>轮询 根据Codeglot的建议,您可以为用户提供密钥。要检查他们的请求,他们可以使用该密钥ping您的服务器。

答案 1 :(得分:0)

告诉用户他们的数据正在处理中,并且很快就会提供。 Youtube,Vimeo,Facebook,Twitter,他们都这样做。