şef kerelik görevleri çok sayıda işlemek için tasarlanmış basit bir dağıtılmış kuyruk olduğunu.
Biz sık sık işlemek için Disqus bu inşa, ama gibi nadir görevler "Yeni bir şema bu verileri göç".
Neden?
"Kereviz kullanmayın Neden?" Diye sorabilirsiniz. Iyi cevap merkezi bir konuma tüm görevleri tampon normal kuyruk (değil kelimenin tam anlamıyla, ama olmadan acı olurdu) gerektirir basitçe. Görevleri büyük miktarda bu verinin büyük miktarda içerir, özellikle bir sorun haline gelir.
Her 5k ağırlığında, sen 1 milyar görevleri var düşünün. Thats, sadece etrafında tutmak, ve çok az kazanır için gerekli depolama minimum 4 terabayt de, sıkıştırılmamış.
Öte yandan şef (standart Python sıra en kullanarak) devam ettirilebilir yineleyici almak ve bir seferde sadece iş maksimum sayıda çekmek için tasarlanmıştır. Bu doğrusal ölçeklenebilir tutarlı bir hafıza desen sağlar.
Kullanım
Bir yineleyici ve geri arama oluşturun:
ithalat soketi
# Biz ** ** ayarlı değil varsayılan zaman aşımı sağlamalıdır veya rasgele bok fan vuracaktır.
socket.setdefaulttimeout (Yok)
# Şef / example.py
def get_jobs (son = 0):
& Nbsp; devlet devam eğer # son gönderilecek
& Nbsp; Bir önceki koşacak gelen #
& Nbsp; i xrange (son 100000000):
& Nbsp; # işleri turşu ile serializeable olmalıdır vermiştir
& Nbsp; verim i
def handle_job: (i)
& Nbsp; # Bu ** zorunluluk bir iş yürütebilir sürecini sürdürme gibi, idempotent olmak **
& Nbsp; # zaten çalıştırmak olduğunu
& Nbsp; print "Got% r!" % I
Bir usta spawn:
& Nbsp; tm-Master taskmaster.example
Bir köle spawn:
& Nbsp; tm-köle taskmaster.example
Ya da 8 köle (her biri bir ThreadPool'da ihtiva eden) yumurtlamaya:
& Nbsp; tm-spawn taskmaster.example 8
Master / Slave için keşfetmek büyülü işlevi gibi Dont? Kendi hedefleri belirleyin:
& Nbsp; tm-Master taskmaster.example: get_jobs $ tm-köle taskmaster.example: handle_job
Not: Tüm argümanlar isteğe bağlıdır ve hiçbir auth tuşu ile localhost varsayılan olacaktır
Gereksinimler :.
- Python
Yorum Bulunamadı