2017-02-18 6 views

답변

0

기본적으로 sidekiq를 조정할 수 있으므로 내가 읽고있는 것에서 대기열 작업 FIFO를 원하는대로 선택할 수 있습니다. sidekiq는 병렬 프로세스를 처리하기위한 것이지만 그럼에도 동시성을 1로 변경할 수 있습니다. 한 번에 하나의 직업 만이 시간에 실행되거나 여기에 무슨 일이 일어나는지 시험해보십시오.

https://github.com/mperham/sidekiq/wiki/Best-Practices#3-embrace-concurrency

0

당신이 특정 ActiveJob 작업의 하나의 인스턴스 만 한 번에 실행이 있는지 확인하려면 다음 뮤텍스 잠금을 구현합니다. redis-mutex과 같은 보석으로 쉽게 할 수 있습니다 (이미 사이드 키가있는 레디 스를 사용하는 경우) :

def perform 
    RedisMutex.with_lock(:your_lock_name, expire: XXX_SECONDS) do 
    # do something exclusively 
    rescue RedisMutex::LockError 
    Rails.logger.debug "Another job is running, exiting ..." 
    end 
end