2011-11-04 2 views
0

메시지 대기열에 셀러리를 사용하는 작은 테스트를 구현했으며 기본 레벨에서 작동하는 방식을 확실히 알고 싶습니다 (장고 - 셀러리, Redis를 브로커로 사용) .기본 셀러리 메시지 큐 작동 방법 이해

제 생각에 비동기 작업을 시작하라는 전화를 걸면 작업 정보가 redis에 놓이고 브로커에 연결된 celeryd 인스턴스가 작업을 실행하고 실행합니다. 이것은 본질적으로 무슨 일입니까?

주기적으로 작업을 설정하면 매시간 한 번씩 실행됩니다. 모든 작업 소비자가 해당 작업을 실행합니까? 그렇다면 한 명의 소비자 만주기적인 작업을 수행 할 수 있도록 제한하는 방법이 있습니까?

답변

2

workers은 브로커만큼 많은 메시지를 소비합니다. 8 명의 작업자가 있지만 1 개의 메시지 만있는 경우, 8 명의 작업자 중 1 명이 작업을 실행하면서 메시지를 소비합니다.

+0

주기적인 작업에 대해 celerybeat 인스턴스 하나만 실행 중이어야하거나 다른 작업을 여러 번 실행해야한다고 명시된 설명서를 보았습니다. 내 생각을 확인해 주셔서 감사합니다. – whatWhat

+0

나는 하나의 스케쥴러가 한 번에 하나의 스케쥴로 실행되는 것을 언급하고 있다는 것을 당신이 말하는 것이라고 생각한다. 즉, 두 명의 스케줄러가있는 경우 동일한 작업을 대기열에 넣으면 두 번 실행됩니다. – sberry