2015-03-11 1 views
0

Это больше советов, поскольку метод, который я думал, чтобы решить эту проблему, не изящный. Мой пример использования прост. Пользователь может выбрать любые данные DATE и TIME, которые необходимо отправить по электронной почте из системы.Совет: отправьте электронные письма по выбранным пользователем времени Ruby on Rails

Например: Пользователь может выбрать, что он хочет, чтобы его электронное письмо было отправлено ему в 7:31 каждое понедельник с понедельника и пятницу из системы Ruby on Rails.

Предположим, что на машине будет 1000 пользователей; Единственный способ, с помощью которого это будет работать, - запустить задание cron с помощью рейка каждую секунду и проверить, соответствует ли время времени любому пользователю, который соответствует определенному времени и времени?

Это кажется идиотским, но тогда я могу просто быть изящным идиотом. Что бы вы использовали для решения этой проблемы?

ответ

0

Решение для чистых систем, отличное от CRON, заключается в том, чтобы полагаться на очередь сообщений для хранения запланированных заданий и кучу независимых процессов для их обработки. Это также масштабируется довольно далеко от одной машины и миллионов пользователей.

Заканчивать clockwork или delayed_job_recurring в паре с resque, sidekiq или delayed_job

Resque/sidekiq очереди использовать Redis для хранения заданий, delayed_job использует свою базу данных. Для 1000+ пользователей это нормально, для более высоких нагрузок очередь в очереди, например redis, будет лучшим выбором.

Смежные вопросы