У меня есть приложение ruby on rails, которое отправляет push-уведомления на основе новых записей, созданных в базе данных, каждые 5 секунд.Есть ли способ, кроме заданий CRON, выполнять опрос / запрос в БД для проверки новых записей.
Моя текущая реализация кода использует CRON каждую минуту, которая спит в течение 5 секунд, но этот подход требует огромного потребления памяти.
schedule.rb #whenever gem file
every 1.minute do
runner "DailyNotificationChecker.send_notifications"
end
* ### ниже кода вызывает метод process_notes каждые 5 секунд
def self.send_notifications
expiry_time = Time.now + 57
while (Time.now < expiry_time)
if RUN_SCHEDULER == "true" || RUN_SCHEDULER == true
process_notes #calls method mentioned below
end
sleep 5 #seconds
end
end
### below code check for new records and sends notification
def self.process_notes
notes = nil
time = Benchmark.measure do
Note.uncached do
notes = Note.where("(created_at > DATE_SUB(now(), INTERVAL 2 minute)) AND `notes`.`processed` = 0")
if notes.present?
note_ids = notes.collect{|x| x.id}
RealtimeNotifier.new.delay.perform(note_ids,NOTE_CREATED,TEMP_USER_NOTE)
end
end
end
end
Этот фрагмент кода работает, но не оптимизированное решение.Есть ли лучший способ добиться этого.