我正在尝试改进使用 Ruby 的发条宝石的过程。
该系统由用户打开服务(状态:打开)并等待员工接受(状态:已预订)组成。
目前,流程如下:
有一个时钟,每一秒都会创建一个与所有开放服务的安排。
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 秒才能对其状态进行第一次更新,而此时它应该立即发生。