我想在一个非常精确的时间运行一个进程。现在我正在使用延迟工作:
handle_asynchronously :make_live, :run_at => (exact_time_down_to_the_second)
但它根本不精确。例如,当我这样做时:
handle_asynchronously :make_live, :run_at => (Time.now + 30.seconds)
...它在 30 秒 +/- 15 秒内执行。随后的尝试发生在 6 秒Time.now
左右,有时几乎是立即发生。
有没有一种精确的方法来做到这一点?没有卡在延迟的工作上。
编辑
当我做:
handle_asynchronously :make_live, :run_at => Proc.new {|event| event.occurs_at }
...它运作良好(似乎将队列轮询到第二个)。即使使用短间隔(30 秒)。
看起来只是控制台测试效果不佳。
所以这解决了我现在的问题。