Вот чего я пытаюсь достичь: Как пользователь я могу забронировать место для класса. Если класс уже заполнен, я буду в списке ожидания. Когда появится новое место, я получаю электронное письмо. С этого момента приложение начинает фоновое задание, которое будет «ждать» 24 часа. Если я не подтвердил, что я занимаю место до 24 часов, это приписывается следующему лицу в списке ожидания, которому также необходимо будет подтвердить до 24 часов.Начните работу с другого места
Проблема заключается в том, чтобы передать место следующему человеку в списке: поскольку я уже в «задании таймера», мне нужно позвонить ему снова со следующим человеком.
class TimerJob
def perform(user_id)
send_confimation_email
if #didn't confirm before 24h
TimerJob.perform(next_user_on_list_id)
else
# save his spot
end
end
end
Первое задание отлично работает, он посылает по электронной почте, ожидает подтверждения в течение 24 часов, а затем отправляет еще одно письмо к следующему человеку в списке, но не запускается на другую работу (строка 5). Поэтому он не начнет процесс снова, если закончится 24-часовое ожидание.
Итак, вопрос будет следующим: как я могу назвать работу в задании, как в моем примере? Есть ли причина, почему это не работает?
Или я слишком усложняю это, и свежий глаз будет иметь более легкое решение?
Я думал о вызове module
из задания, которое в основном вызовет задание. Но то же самое здесь, не получилось. Любой вход будет очень оценен.
Вы используете sidekiq? – Jayaprakash
@Jayaprakash да я –
Можете ли вы попробовать это? "TimerJob.new.perform (next_user_on_list_id)" или "TimerJob. Perform_async (next_user_on_list_id)" – Jayaprakash