假设我安排了一个rufus-scheduler的工作,如下所示:
scheduler.cron '* * * * * UTC' do |job|
...
end
我可以从'job'变量中检索一些有用的信息。例如,next_time显示下次运行的计划时间。我想知道“current_time”是否有类似的值。原因:由于各种原因(线程,系统负载等),可以以少量延迟执行作业。我想知道工作开始的确切时间。如果我按Time.new
检索系统时间,那将不完全正确。
有办法吗?我尝试了 awesome_print 作业变量。看来我正在寻找的价值是不可用的。
jruby-1.7.19 :017 > #<Rufus::Scheduler::CronJob:0x3951b84e @unscheduled_at=nil, @first_at=nil, @opts={}, @last_time=2016-07-28 01:35:00 +0800, @tags=[], @mean_work_time=0.0, @callable=#<Proc:0x2ee23f1d@(irb):14>, @last_at=nil, @count=1, @scheduled_at=2016-07-28 01:34:09 +0800, @handler=#<Proc:0x2ee23f1d@(irb):14>, @paused_at=nil, @local_mutex=#<Mutex:0x79da0f7>, @locals={}, @times=nil, @scheduler=#<Rufus::Scheduler:0x7dc7d255 @mutexes={}, @scheduler_lock=#<Rufus::Scheduler::NullLock:0x49c20af6>, @paused=false, @opts={}, @work_queue=#<Queue:0x625dc24e>, @jobs=#<Rufus::Scheduler::JobArray:0x797fc155 @mutex=#<Mutex:0x501b94b9>, @array=[#<Rufus::Scheduler::CronJob:0x3951b84e ...>]>, @trigger_lock=#<Rufus::Scheduler::NullLock:0x42c126c5>, @started_at=2016-07-28 01:33:36 +0800, @thread_key="rufus_scheduler_2068", @stderr=#<IO:fd 2>, @max_work_threads=28, @frequency=0.3, @thread=#<Thread:0x16d871c0 sleep>>, @cron_line=#<Rufus::Scheduler::CronLine:0x6156f1b0 @seconds=[0], @weekdays=nil, @hours=nil, @timezone="UTC", @days=nil, @minutes=nil, @original="* * * * * UTC", @months=nil, @monthdays=nil>, @last_work_time=0.0, @id="cron_1469640849.047_961656910", @original="* * * * * UTC", @next_time=2016-07-27 17:36:00 +0000>
答案 0 :(得分:1)
作业的#next_time
应该保持触发时间,直到#post_trigger
挂钩被调用。
答案 1 :(得分:1)
添加了scheduler.every('10s') do |job|
puts "job scheduled for #{job.previous_time} triggered at #{Time.now}"
puts "next time will be around #{job.next_time}"
puts "."
end
{{1}}