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