Я использую Sidekiq debounce, чтобы оценить ограничение количества заданий в таймфрейме. Вот моя работа:Rails: Как добавить Sidekiq :: Дебют в цепочку промежуточного программного обеспечения
class CalculateAllEventRankingsForUser
include Sidekiq::Worker
sidekiq_options debounce: true
def perform(user_id)
puts "recalculating all events for user"
## do some work
end
end
Где я называю работу:
CalculateAllEventRankingsForUser.perform_in(20.seconds, self.id)
И мой sidekiq инициализатор:
Sidekiq.configure_server do |config|
config.client_middleware do |chain|
chain.add Sidekiq::Debounce
end
config.server_middleware do |chain|
chain.add Sidekiq::Debounce
end
end
Вопрос заключается в том, что все мои sidekiq работы все еще обрабатывается, даже если я стреляю несколькими в течение 20 секунд. Мое намерение заключается в том, чтобы увольнять только одну работу каждые 20 секунд (максимум).
Из документов:
Добавить Sidekiq :: DEBOUNCE к вашему клиенту промежуточного слоя цепи, а затем добавить sidekiq_options дребезга: правда работника, который вы хотите дребезг.
Используйте #perform_in вместо #perform_async, чтобы установить таймфрейм.
Главное, что я не уверен в том, как добавить Sidekiq :: Debounce к моей цепочке промежуточного программного обеспечения. Не уверен, что я делаю это правильно.
Любые идеи о том, как разрешить это?
Вы продолжаете задавать тот же вопрос, а не читать предыдущий ответ на свой предыдущий вопрос: http://stackoverflow.com/questions/40119004/rails-sidekiq-confused-about-debounce/40119327? Noredirect = 1 # comment67509958_40119327 –
Эй, @SergeyMoiseev. Я выполнил ваше решение из предыдущего ответа. Это другой вопрос с более конкретными деталями. Я переписал свой код, так что debounce - идеальное решение. Но я не уверен, как добавить Sidekiq :: Debounce в мою цепочку промежуточного программного обеспечения. Сейчас я пытаюсь реализовать sidekiq-debounce, но все мои задания все еще увольняются. –
Какую версию siqekiq вы используете? –