我正在建立一个网站,我有一个管理员页面。管理员必须运行报告任务,这意味着,任务将迭代所有记录获取信息并生成pdf文件。现在,这将对应用程序和数据库造成沉重负担。
通常的做法是什么?我应该有一个调用类方法的按钮,还是应该有一个rake任务?我听说HTTP GET请求有一个限制,如果生成报告的次数超过了那个,那么就会终止请求。
我想使用send_data(....)
,以便在完成报告后为用户提供一个很好的下载弹出框。使用邮件并通过电子邮件发送它会更好吗?
由于
答案 0 :(得分:3)
我们的Rails应用程序在我的工作中具有类似的功能。
我们有一个URL /操作启动生成PDF文件的请求,并立即返回说请求已成功启动。
然后我们可以使用AJAX轮询另一个动作,该动作返回报告是否完整,当它完成时,它会向用户提供PDF。
实际生成由Sidekiq工作人员完成,该工作人员不受网络服务器超时的限制。