我的应用程序有一个 API,用户可以请求数据。有时,这些数据需要时间来处理,并且会破坏我的代码。
我需要一个解决方案,我正在考虑使用delayed_job,但我不确定它是如何工作的。如果用户提出请求,我需要给他一个答案。即使我在后台处理数据,调用仍然需要等待作业返回。
这个问题有什么解决办法吗?我不知道该怎么做。
谢谢
最佳答案
Heroku 有一个 30 second timeout ,这就是您的请求失败的原因(可能是您的 Heroku 日志中的 H12 或 H13)。
可以通过三种方法来解决这个问题。
通过发送空白数据保持连接打开。 您需要在前 30 秒内回复,此后每隔 55 秒回复一次。利用中间的时间来处理数据。发送空格不应影响浏览器读取响应的能力。
回调 让用户在初始请求中提供回调 URL。处理完数据后,请使用您的响应点击回调网址。
投票 根据 Codeglot 的建议,您可以向用户提供 key 。要检查他们的请求,他们可以使用该 key ping 您的服务器。
关于ruby-on-rails-3 - 轨道 3 : Return large amount of data to user via API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486035/