1

我有一个应用程序使用restforce向 salesforce 发出 API 请求。

具体来说,应用程序会找到一个联系人对象,返回所有相关对象的 ID,然后根据其 ID 提取每个相关对象的完整记录。

这需要很长时间,原因有两个:

  1. 对外部 API 的请求很多,通常每个请求都需要几分之一秒的时间来回复,有些可能会有 +500 个单独的请求。
  2. 每个请求通常都会拉回大量数据。

当前所有请求都在 salesforce rest API 限制范围内,但我的开发服务器出现超时错误,因为处理其中一些请求可能需要 5 分钟以上。

Rails 4.2 - 如何最好地处理这个?

我的问题是我如何最好地让轨道来处理这个问题?

我可以从控制器(这肯定违反了瘦控制器)或视图(通过辅助方法,这似乎是一个狡猾的黑客)触发 API 请求。

理想情况下,我想让它在后台作业中运行,但我不确定我是否可以像包含辅助方法一样在作业中包含所有身份验证和其他方法?

即使我可以让它在后台工作中工作,我也不确定用户体验的最佳实践是什么。理想情况下,我想将它们路由到一个页面,告诉他们“坚持住,去喝杯咖啡”,并带有进度条,然后在请求完成后自动将它们路由到最后一页......

但我不确定如何在工作完成之前生成临时显示?

任何人都可以推荐任何可以帮助我消化这个问题的宝石或策略吗?

4

1 回答 1

1

您绝对应该为此使用后台作业。

为作业提供一个数据库对象,它将更新以指示已完成,并且可能不时指示进度。

在用户方面,只需告诉他们后台作业正在工作,最终带有进度指示器,并在提供给作业的数据库对象告诉您它已准备好时显示结果。

于 2015-04-19T01:42:27.753 回答