Лучший способ запланировать задачи для динамического запуска в будущем, используя celery + sqs - PullRequest
0 голосов
/ 30 мая 2018

Так что я изо всех сил пытаюсь найти оптимальный способ запланировать некоторые события, которые произойдут в определенный момент в будущем, используя сельдерей.Например, когда новый пользователь зарегистрировался, мы хотим отправить ему электронное письмо на следующий день.

У нас есть настройка сельдерея, и некоторые из вас могут ссылаться на параметр eta при вызове apply_async.Однако это не будет работать для нас, так как мы используем SQS, у которого есть время ожидания видимости, которое может конфликтовать, и, как правило, параметр eta не должен использоваться в течение длительных периодов.

Одно решение, которое мы реализовали вэтот момент заключается в создании событий и их сохранении в базе данных с отметкой времени «для обработки» (указывает, когда обрабатывать событие).Мы используем планировщик ритма сельдерея с задачей, которая запускается буквально каждую секунду, чтобы увидеть, есть ли какие-нибудь новые события, которые готовы обработать.Если есть, мы выполняем последующие задачи.

Это решение работает, хотя оно не очень хорошо, так как мы ставим задачу в очередь каждую секунду в SQS.Есть какие-нибудь мысли или идеи по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...