2013-04-25 64 views
3
class A < ActiveRecord::Base 
    def self.a 
    A.first.touch 
    delay(run_at: Proc.new{ 10.seconds.from_now }).a 
    log.info 'Added job to run at ' + 10.seconds.from_now.to_s 
    end 

    def self.log 
    @log ||= Logger.new 'dj.log' 
    end 
end 

周期性任务为什么我看到这个工人日志:与延迟招聘的宝石

Added job to run at 2013-04-26 01:04:53 UTC 
Added job to run at 2013-04-26 01:04:53 UTC 
Added job to run at 2013-04-26 01:04:54 UTC 
Added job to run at 2013-04-26 01:04:54 UTC 
Added job to run at 2013-04-26 01:04:55 UTC 

注:并非分离10秒。

+0

那么'A.a'排队延迟的作业,调用'A.a'? – 2013-04-25 03:36:14

+0

是的,'a'做了一些事情,并在10秒后排队做同样的事情 – juanpastas 2013-04-25 03:57:48

回答

3

如果您想要运行重复性任务,例如每天。您可以使用rufus-scheduler

rufus-scheduler is a Ruby gem for scheduling pieces of code (jobs) 

也有一些扩展resquesidekiq

希望它有帮助!

+0

rufus-scheduler为我工作,不能让它随时处理PATH问题 – juanpastas 2013-04-29 20:37:37

+0

请注意,'rufus'不会将任务持续为'delayed_job '或'resque'做。 – 2013-12-05 01:29:38

+0

如果您使用的是delayed_job,则可以使用此gem [delayed_job_recurring](https://github.com/amitree/delayed_job_recurring)来调度重复作业。我已经在多个基于ROR的应用程序中使用它,并且工作顺利。 – 2016-04-15 06:29:04