Mirkom63
@Mirkom63
Я программист

Реализация уведомления по времени на ruby on rails?

Задача очень простая. Сделать отложенные уведомления.

Я начал использовать delayed_job. Но появилась проблема. Со временем на сайте появилось очень много уведомлений и получается ситуация, когда на одно и то же время очень много задач. И отложенная задача, которая должны запустится в 14:00, запускается в 14:10, а то и в ч 14:30. От части, это потому что, время от времени запуска.тся очень массивные задачи по обновлению контента базы и они могут совместно работать до получаса, тем самым, тормозив работу уведомлений. Но в любом случае, со временем проект разрастется и даже кол-во уведомлений на одну точку будет очень много.

Вопрос №1: можно ли решить эту проблему и запускать задачи параллельно точно в нужное время?
Вопрос №2: решит ли эту проблему Resque или Sidekiq? Просто надо ли разбираться в чем-то новом вообще?
Вопрос №3: Может есть какая-то другая реализация уведомлений, более умная, чем просто отложенные задачи?
  • Вопрос задан
  • 211 просмотров
Решения вопроса 2
zorar4ik
@zorar4ik
Full stack overflow
В Sidekiq можно создать именные очереди и запихивать туда только уведомления, остальные процессы не будут тормозить отправку уведомлений.
Ответ написан
Комментировать
@eliastro
Используйте sidekiq. В этом случае очередь задач будет обрабатываться параллельно. Настройте кол-во воркеров сайдкик исходя из нагрузки(посмотрите в админке). А также создайте несколько очередей. Та очередь задач, которую нужно обрабатывать как можно скорее - поставьте ей максимальный приоритет.
Rescue - однопоточный. Он вам не подойдет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы