Ruby の clockwork gem を使用するプロセスを改善しようとしています。
このシステムは、サービスを開始するユーザー (ステータス: オープン) と、従業員がそれを受け取るのを待つ (ステータス: 予約済み) で構成されます。
現在、プロセスは次のとおりです。
毎秒、すべてのオープン サービスとの取り決めを作成する時計仕掛けがあります。
every(1.seconds, 'Uptading Booking Invatations') { update_invitations }
各サービスについて、そのサービスのステータスが最後に更新されてから 15 秒が経過したことを確認します。
bookings.each do |booking|
elapsed_time = Time.now - booking.created_at
step_size = 15
try = (elapsed_time + step_size) / step_size
try = try.to_i
next if booking.update_status_try.value >= try
booking.update_service
end
最後のステータス更新から 15 秒が経過した場合は、ステータスを更新します。そうでない場合は、何もしません。
クロックが 15 秒ごとに直接実行されるようにプロセスを最適化したいと思います。
問題は、新しく作成されたサービスの場合、ステータスの最初の更新がすぐに行われるはずなのに、最大 14 秒待機することがあるということです。