【发布时间】:2015-04-06 11:39:14
【问题描述】:
我有一个应用程序使用 restforce 向销售人员发出 API 请求。
具体来说,应用程序会找到一个联系人对象,返回所有相关对象的 ID,然后根据其 ID 提取每个相关对象的完整记录。
这需要很长时间,原因有两个:
- 对外部 API 的请求很多,每个请求通常需要几分之一秒的时间来回复,有些请求可能有 +500 个单独的请求。
- 每个请求通常会拉回大量数据。
目前所有请求都属于 salesforce rest API limits,但我的开发服务器出现超时错误,因为处理其中一些请求可能需要 5 分钟以上。
Rails 4.2 - 如何最好地处理这个问题?
我的问题是如何最好地让 rails 来处理这个问题?
我可以从控制器(这肯定违反了瘦控制器)或视图(通过辅助方法,这似乎是一种狡猾的 hack)触发 API 请求。
理想情况下,我想让它在后台作业中运行,但我不确定是否可以像包含辅助方法一样在作业中包含所有身份验证和其他方法?
即使我可以让它在后台工作中工作,我也不确定用户体验的最佳做法是什么。理想情况下,我想将它们路由到一个页面,告诉他们“坚持住,去喝杯咖啡”并带有进度条,然后在请求完成后自动将它们路由到最后一页......
但我不确定如何在作业完成之前生成临时显示?
任何人都可以推荐任何可以帮助我消化这个问题的宝石或策略吗?
【问题讨论】:
-
将耗时的任务委托给后台进程可能是个好主意。查看edgeguides.rubyonrails.org/active_job_basics.html & sitepoint.com/…
标签: ruby-on-rails activerecord rails-activejob