Я хочу, чтобы дать своим пользователям возможность послать им ежедневную сводку своих статистических данных аккаунта в конкретных (пользователь дал) время ....Rails 3.1/грабли - datespecific задачи без очередей
Позволяет сказать следующую модель :
class DailySummery << ActiveRecord::Base
# attributes:
# send_at
# => 10:00 (hour)
# last_sent_at
# => Time of the last sent summary
end
Есть ли передовая практика, как отправить резюме по электронной почте на определенное время?
В настоящее время у меня есть бесконечная задача рейка, которая проверяет, постоянно ли электронные письма доступны для отправки, и я хотел бы поместить генерация dailysummary и отправить в эту команду rake.
У меня была мысль, что я мог бы решить эту проблему с следующий псевдокод:
while true
User.all.each do |u|
u.generate_and_deliver_dailysummery if u.last_sent_at < Time.now - 24.hours
end
sleep 60
end
Но я не уверен, если это имеет некоторые скрытые подводные камни ...
Примечание: Я не хочу использовать очереди, такие как resq или redis или что-то в этом роде!
EDIT: Добавлен сон (есть это уже в моем сценарии)
EDIT: Это критическое время обслуживание (уведомление о торговом ставке), поэтому она должна быть как можно быстрее. Вот почему я не хочу использовать систему на основе очереди или работы. И я использую Monit для управления этой граблиной задачей, которая работает очень хорошо.
Это именно то, что делают фоновые очереди заданий. Они создают длительный процесс (отложенное задание использует задачу рейка, точно так же, как вы предлагаете), которая периодически запускает задачу. – tee
Это критически важный сервис (уведомление о ставках торговли), поэтому оно должно быть как можно быстрее. Вот почему я не хочу использовать систему на основе очереди или работы. – Lichtamberg