2011-02-10 5 views
1

BJ에서 작업을 설정하고 특정 "type"중 2 개가 동시에 실행되지 않는 방법이 있습니까?BJ concurency를 처리하는 쉬운 방법이 있습니까

우리는 24 개의 유니콘을 실행 중이며, 각각의 유니콘을 시작할 수 있습니다. 우리가 여러 가지 작업 처리기를 배경 작업을 두드리는 것을 좋아하는 큰 거래가 아닙니다. 예외는 데이터 가져 오기입니다. 우리는 한 번에 그 중 하나 이상을 실행하지 말라고 말하고 싶습니다.

BJ에서 가능한가요? 아니면 resque와 같은 것으로 넘어 가야합니까?

답변

1

이렇게하는 한 가지 방법은 데이터 가져 오기 작업을 특정 우선 순위 수준으로 제한 한 다음 하나의 지연된 작업 만 해당 우선 순위의 작업을 선택하는 것입니다. 예를 들어, 다른 모든 작업을 우선 순위 0에서 99로 실행하고 데이터 가져 오기 작업을 우선 순위 100으로 실행하려는 경우 모든 지연된 작업자를 min_priority 0에서 max_priority 99로 실행할 수 있습니다 min_priority 100에서 max_priority 100까지 실행중인 지연된 작업자를 한명씩 가질 수 있으므로 한 명의 작업자 만 작업을 수행 할 수 있습니다. 이렇게하면 두 개의 가져 오기 데이터 작업 (우선 순위 100)이 동시에 실행되지 않습니다.

+0

우리는 지연된 작업이 아닌 백그라운드 작업 https://github.com/jkraemer/bj를 실제로 사용하고 있습니다. 그 질문의 일부입니다. 지연된 작업으로 전환하거나 다시 작성해야합니다. – Ben

+0

확실히. 나는 당신이 Resque로 완전히 이동할 필요가 없다고 생각합니다. DelayedJob으로 이동하면 많은 이점을 얻을 수 있습니다. – davemyron

+1

다른 우선 순위 수준에서 BJ를 시작할 수없는 것 같아서 delayed_job으로의 전환을 권장합니다. 최신 상태로 유지되는 사용 빈도가 높은 보석이므로 지원도 좋습니다. –

관련 문제