감독관은 일회성 다수의 태스크를 처리하기 위해 설계된 간단한 분산 큐입니다.
우리는 자주 처리하는 Disqus에에이를 내장,하지만 같은 드문 작업 "새 스키마에이 데이터를 마이그레이션".
왜?
"셀러리를 사용하지 왜?"당신은 요청할 수 있습니다. 그럼 대답은 당신이 중앙 위치에 모든 작업을 버퍼링하는 일반 큐 (문자 그대로,하지만이없이 고통스러운 것)이 필요합니다 단순히이다. 사용자가 작업의 많은 양을 가질 때들은 많은 양의 데이터를 포함 할 때 특히 문제가된다.
각각 5K에 무게, 당신이 10 억 작업을 상상해 보라. 그게, 그냥 주위를 유지하고, 당신이 아주 작은 이익 필요한 저장의 최소 4 테라 바이트에서, 비 압축.
반면에 감독관은 (표준 파이썬 큐의 사용) 재개 반복자를 가지고 가고, 한 번에 작업의 최대 수에 끌어하도록 설계되었습니다. 이 선형 적으로 확장 할 수있는 일관된 메모리 패턴을 보장합니다.
용법
반복자 및 콜백을 만듭니다
수입 소켓
# 우리는 ** **이 설정되지 않은 기본 제한 시간을 확인해야하거나 임의의 똥은 팬에 타격을 줄 것으로 예상된다.
socket.setdefaulttimeout (없음)
# 감독관 / example.py
데프 get_jobs (마지막 = 0)
& NBSP; 상태가 재개 된 경우 #의 마지막 전송됩니다
& NBSP; 이전 실행에서 #
& NBSP;에 대해 내가 xrange에서 (마지막, 100,000,000) :
& NBSP; # 작업은 피클 serializeable해야 굴복
& NBSP; 항복 전
데프 handle_job (I) :
& NBSP; #이 ** 반드시이 작업을 실행할 수있는 프로세스를 다시 시작으로, 멱등 수 **
& NBSP; # 이미 실행했던 그
& NBSP; 인쇄 "이 적힌 %의 R!" %의 난
마스터를 생성 :
& NBSP; TM 마스터 taskmaster.example
노예 스폰 :
& NBSP; TM-슬레이브 taskmaster.example
슬레이브 또는 8 (각각 스레드 함유) 스폰 :
& NBSP; TM-스폰 taskmaster.example 8
마스터 / 슬레이브 발견 마법의 기능 좋아하지 않아? 자신의 목표를 지정합니다 :
& NBSP; TM 마스터 taskmaster.example : get_jobs의 $ TM-슬레이브 taskmaster.example : handle_job
참고 :. 모든 인수는 선택 사항없이 정식 키를 localhost로 기본 설정됩니다
이 요구 사항 :
이 파이썬
댓글을 찾을 수 없습니다