2013-10-08 2 views
30

을 실행하기 위해 sidekiq을 가져,이 같은 sidekiq 작업이 있습니다순간 작업 즉시

class SyncUser 
    include Sidekiq::Worker 

    def perform(user_id) 
    #do stuff 
    end 
end 

이 같은 큐에 작업을 배치하고 있습니다 :

SyncUser.perform_async user.id 

이 모든 일을 물론 perform_async 호출과 실제로 실행되는 작업 사이에는 약간의 지연이 있습니다.

sidekiq이 작업을 즉시 실행하도록 할 수있는 다른 방법이 있습니까?

+3

sidekiq를 사용하는 모든 아이디어는 비동기식 작업을 수행하는 것입니다. 직접 실행하려면 사용 가능한 충분한 직원이 있는지 확인하거나 요청 자체 내에서 실행하십시오. – jewilmeer

답변

64

여기에는 두 가지 질문이 있습니다. 현재 상황에서 즉시 작업을 실행하려면

당신은 사용할 수 있습니다

SyncUser.new.perform(user.id) 

를 그것이 sidekiq 노동자 실행 때 비동기 작업 사이의 지연이 예정되어 감소 싶은 경우에, 당신은

Sidekiq.configure_server do |config| 
    config.poll_interval = 2 
end 

poll_interval 노동자가 큐에 작업을 확인하는 빈도의 노동자 백엔드 내에서 지연은 다음 poll_interval 설정을 줄일 수 있습니다. 무료 근로자와 함께 예정되고 실행되는 작업 사이의 평균 시간은 poll_interval/2입니다.

+0

유용한 정보입니다. – nathanengineer

+1

궁금한 점이있는 경우 기본 poll_interval은 현재 15 초입니다. https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs#checking-for-new-jobs –