Ruby 是否有可能获得;当前“U时间”;在rufus调度器中

Ruby 是否有可能获得;当前“U时间”;在rufus调度器中,ruby,jruby,rufus-scheduler,Ruby,Jruby,Rufus Scheduler,假设我用rufus scheduler安排了一个作业,如下所示: scheduler.cron '* * * * * UTC' do |job| ... end 我可以从“job”变量中检索一些有用的信息。例如,“下一次运行时间”显示下一次运行的计划时间。我想知道“当前时间”是否有类似的值。原因:由于各种原因(线程、系统负载等),作业的执行可能会有少量延迟。我想知道这项工作开始的确切时间。如果我通过time.new检索系统时间,则不准确 有办法吗?我试着打印作业变量。看来我正在寻找的价值是不可

假设我用rufus scheduler安排了一个作业,如下所示:

scheduler.cron '* * * * * UTC' do |job|
...
end
我可以从“job”变量中检索一些有用的信息。例如,“下一次运行时间”显示下一次运行的计划时间。我想知道“当前时间”是否有类似的值。原因:由于各种原因(线程、系统负载等),作业的执行可能会有少量延迟。我想知道这项工作开始的确切时间。如果我通过
time.new
检索系统时间,则不准确

有办法吗?我试着打印作业变量。看来我正在寻找的价值是不可用的

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>
jruby-1.7.19:017>#
一个作业的
下一次
应该保持触发时间,直到调用
后触发
钩子。

一个作业的
下一次
应该保持触发时间,直到调用
后触发
钩子。

添加了一个
作业的
前一次

添加了一个
作业#上一次_时间


我试着下一次打印,现在正在工作。他们不匹配。next time=2016-07-28 06:54:11+0800 now=2016-07-28 06:54:06+0800 next time=2016-07-28 06:54:16+0800 now=2016-07-28 06:54:11+0800 next time=2016-07-28 06:54:21+0800 now=2016-07-28 06:54:16+0800好的,确实“最后一次”效果更好,但这是触发时间,而不是之前预期的下一次我尝试下一次打印,现在正在工作中。他们不匹配。下一次=2016-07-28 06:54:11+0800现在=2016-07-28 06:54:06+0800下一次=2016-07-28 06:54:16+0800现在=2016-07-28 06:54:11+0800下一次=2016-07-28 06:54:21+0800现在=2016-07-28 06:54:16+0800好的,确实“最后一次”效果更好,但这是触发时间,而不是之前预期的下一次真的很酷!也谢谢你。所以,我应该期望代码的输出是“计划在下次触发的作业将在附近”,“计划在下次触发的作业将在附近”。。。(~t1将比t1晚几毫秒)?还有,对不起,但我忍不住想知道为什么这个名字叫“上一次”。为什么不触发时间?我从我之前的评论中收回“为什么不触发时间?”。所以trigger_time的语义是作业被触发的实际时间,这不是我需要的。但我还是建议用一个名字,比如预定时间。我会考虑的。你说“我想知道工作开始的确切时间”,而这正是job#previous#U时间给出的。那真的很酷!也谢谢你。所以,我应该期望代码的输出是“计划在下次触发的作业将在附近”,“计划在下次触发的作业将在附近”。。。(~t1将比t1晚几毫秒)?还有,对不起,但我忍不住想知道为什么这个名字叫“上一次”。为什么不触发时间?我从我之前的评论中收回“为什么不触发时间?”。所以trigger_time的语义是作业被触发的实际时间,这不是我需要的。但我还是建议用一个名字,比如预定时间。我会考虑的。你说“我想知道工作开始的确切时间”,而这正是工作之前的时间所给予的。
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