如何创建类似于javascript油门/去抖功能的Rails / Ruby方法

时间:2015-08-27 18:35:23

标签: ruby-on-rails ruby debouncing cramp eventsource

在我们的应用程序中,我们公开了一个外部服务的回调路由。当我们收到回调时,我们使用客户端/浏览器端的Eventsource和服务器端的cramp向客户端订阅者发布更新。但是,有时候,我们会受到来自此外部服务的回调请求的轰炸,这导致我们向客户发布了大量更新。在Rails方面是否有一种类似于javascript去抖功能的方法,它会在收到的回调之间等待一段时间来发布消息?

我们已经使用了sidekiq +线程,因此可以使用这些工具接受建议。

1 个答案:

答案 0 :(得分:5)

有一个Sidekiq-debounce宝石。

另一种方法(没有这样的宝石)是使用Rails.cache每x时间只触发一次执行

delay = 1.minute
Rails.cache.fetch('unique-identifier-of-the-job', expires_in: delay) do
 YourActiveJobHere.set(wait: delay).perform_later('your-action')
end