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