0

なぜこれがうまくいかないのかを理解しようとしています:

loop do

  started = Time.now

  # do stuff

  ended = Time.now - started

  if 5.minutes > ended
    sleep ended
  end

end
4

1 に答える 1

1

現在のコードは、元のプロセスにかかった時間 ( の値ended) だけスリープします。これにより、ループ時間全体の半分が「何かをしている」、半分がスリープ状態になります。おそらく、睡眠ラインを次のように変更する必要があります

sleep 5.minutes - ended

代わりに、私が質問を正しく理解し、完了するまでにかかる時間を考慮して、5 分ごとに 1 回プロセスを実行したい場合。

cronループに到達するまでのセットアップ時間がそれほど長くない場合は、代わりに使用を検討することをお勧めします。

于 2013-08-01T20:30:19.220 に答える