Sidekiq debounce을 사용하여 시간대의 작업 수를 제한합니다. 여기 내 직업 :레일 : 내 미들웨어 체인에 Sidekiq :: Debounce를 추가하는 방법
내가 작업을 호출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 :: 디 바운스를 추가 한 다음 sidekiq_options 디 바운스를 추가 : 당신이 진동을 소거하고자하는 근로자에 충실.
#perform_async 대신 #perform_in을 사용하여 시간대를 설정하십시오.
가장 중요한 것은 Sidekiq :: Debounce를 내 미들웨어 체인에 추가하는 방법입니다. 내가 그 일을 제대로하고 있는지 확실하지 않습니다.
해결 방법에 대한 아이디어가 있으십니까?
을 당신은 같은 질문을 대신 이전 문제에 이전 답을 계속 읽어 : http://stackoverflow.com/questions/40119004/rails-sidekiq-confused-about-debounce/40119327? noredirect = 1 # comment67509958_40119327 –
안녕하세요. @SergeyMoiseev. 이전 답변에서 귀하의 솔루션을 구현했습니다. 이것은보다 구체적인 세부 사항과는 다른 질문입니다. 나는 debounce가 이상적인 해결책이되도록 내 코드를 다시 작성했다. 하지만 Sidekiq :: Debounce를 미들웨어 체인에 추가하는 방법을 잘 모르겠습니다. 지금 당장은 sidekiq-debounce를 구현하려고하지만 모든 작업이 계속 실행 중입니다. –
어떤 버전의 siqekiq를 사용하십니까? –