Rails如何去除背景任务?

时间:2018-05-17 19:01:31

标签: ruby-on-rails sidekiq delayed-job

Debouncing 是将函数/作业从执行推迟到经过一定时间后的常用方法。

用例:来自多个用户的有效聊天对话,他们不应该收到每个键入的消息的电子邮件通知。但是,在几分钟的沉默之后,如果消息未读,则用户应该看到通知。

Rails后台任务

有效作业

没有解决方案

delayed_job的

没有解决方案,有相关问题:https://github.com/collectiveidea/delayed_job/issues/72

Sidekiq

https://github.com/hummingbird-me/sidekiq-debounce

1 个答案:

答案 0 :(得分:0)

我要做的是安排定期任务,让我们说每5分钟检查是否有人需要通知。是的,这似乎是一项昂贵的操作,但对于您的使用案例,我不会(现在)看到其他解决方案。因此,假设您有10个使用聊天的用户。每隔5分钟,您就可以检查是否有用户没有看到某些消息,如果有,则只有在N分钟内处于非活动状态时才通知他们。

要安排此类任务,您可以使用crono gem。请检查此answer

Crono让你做那样的事情:

Crono.perform(CheckUsersToBeNotifiedJob).every 5.minutes