我有一个Web应用程序,需要执行一个耗时较长的过程(通常需要1分钟左右)。
我来简要解释一下:在我的应用程序中,我有一个算法根据一些参数(主要是日期)为一组对象分配外键。当用户按下应用程序内指定的按钮时,会执行一个控制器方法。在该方法内,我调用模型中处理所有逻辑并分配密钥的方法。如前所述,整个过程大约需要1分钟才能完成。
那么我的问题是:在Rails 5中最好的后台运行此进程的方法是什么?我显然不想强迫用户等待整整一分钟才能浏览应用程序,也不想当浏览器正在等待服务器的响应时,应用程序超时。那么如何处理最佳呢?我需要一个可以异步请求的框架吗?如果是这样,使用哪个框架比较好?(我希望它不需要太多依赖项,如果可以继续使用ActiveRecord,则最好)。
我没有真正使用过ActionCable或AJAX,但是如果它们可以任何方式完成工作,我会很高兴知道如何使用它们。
理想情况下,我应该能够在应用程序内向用户发送通知,一旦进程完成就可以实现。
view.html.erb:
我来简要解释一下:在我的应用程序中,我有一个算法根据一些参数(主要是日期)为一组对象分配外键。当用户按下应用程序内指定的按钮时,会执行一个控制器方法。在该方法内,我调用模型中处理所有逻辑并分配密钥的方法。如前所述,整个过程大约需要1分钟才能完成。
那么我的问题是:在Rails 5中最好的后台运行此进程的方法是什么?我显然不想强迫用户等待整整一分钟才能浏览应用程序,也不想当浏览器正在等待服务器的响应时,应用程序超时。那么如何处理最佳呢?我需要一个可以异步请求的框架吗?如果是这样,使用哪个框架比较好?(我希望它不需要太多依赖项,如果可以继续使用ActiveRecord,则最好)。
我没有真正使用过ActionCable或AJAX,但是如果它们可以任何方式完成工作,我会很高兴知道如何使用它们。
理想情况下,我应该能够在应用程序内向用户发送通知,一旦进程完成就可以实现。
view.html.erb:
# Button the user presses to execute the algorithm
<%= link_to 'execute algorithm', algorithm_path(@variable), :method => :put %>
my_controller.rb:
def button_method
Object.execute_algorithm(@variable)
redirect_to :back
end
Object.rb:
def self.execute_algorithm(variable)
# Logic
end