我是否应该将延迟作业用于长时间运行的后台任务?

时间:2014-03-23 01:49:22

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

我有一个应用程序,我想在激活后72小时自动停用用户。我已经设置了延迟工作,但我现在想知道这是否是最好的选择。

我的问题是,如果我将来将任务设定为72小时,那么整个72小时内工作人员是否会活跃? (我很担心Heroku按小时收费)

我愿意在这里提出更好的方法。我的一个想法就是使用exp_date列进行设置,并通过完全消除对DJ的需求来检查那里。

2 个答案:

答案 0 :(得分:1)

  

我的问题是,如果我将来将任务设定为72小时,那么整个72小时内工作人员是否会活跃? (我关注这一点,因为Heroku按小时收费)

是的,这将是所有时间。延迟作业不断ping数据库以查看其队列中是否有任何作业。

而且,关于最佳选择,我认为我宁愿将一列知道为valid_upto并将日期置于活动状态。我只对那些created_at日期小于或等于valid_upto日期的用户签名(或其他)。并且,定期可能是一个月一次,我将运行一个cron作业来删除invalid用户。

而且,就像@leesungchul建议的那样,你可以使用它,看起来很酷。

答案 1 :(得分:0)

您可以使用无效的宝石作为延迟作业的插件,这样您就不会让您的工作人员继续在heroku上运行。

https://github.com/lostboy/workless