我的应用有一个用户可以请求数据的API。有时,数据需要时间来处理并破坏我的代码。
我需要一个解决方案,我正在考虑使用delayed_job,但我不确定这是如何工作的。如果用户提出请求,我需要给他一个答案。即使我在后台处理数据,调用仍然需要等到作业返回。
这是什么解决方案?我不知道该怎么做。
由于
答案 0 :(得分:3)
Heroku有一个30 second timeout,这就是你的请求失败的原因(你的heroku日志中可能是H12或H13)。
有三种方法可以解决这个问题。
通过发送空白数据保持连接处于打开状态。 你需要在前30秒内和之后的55秒内做出响应。使用两者之间的时间来处理数据。发送空格不应影响浏览器读取响应的能力。
<强>回调强> 让用户在初始请求中提供回调URL。处理完数据后,请使用您的回复点击回调网址。
<强>轮询强> 根据Codeglot的建议,您可以为用户提供密钥。要检查他们的请求,他们可以使用该密钥ping您的服务器。
答案 1 :(得分:0)
告诉用户他们的数据正在处理中,并且很快就会提供。 Youtube,Vimeo,Facebook,Twitter,他们都这样做。