katiwala ay isang simpleng ibinahagi sa queue dinisenyo para sa paghawak ng malaking bilang ng mga isa-off ang mga gawain.
Binuo namin ito sa DISQUS upang mahawakan ang mga madalas na, ngunit hindi karaniwang mga gawain tulad ng "mag-migrate ang data na ito sa isang bagong schema".
Bakit?
Maaari kang magtanong, "Bakit hindi gumagamit ng kintsay?". Well ang sagot ay na nangangailangan ng normal queuing (hindi literal, ngunit nais itong maging masakit nang hindi) na nagpapahina ng lakas sa lahat ng mga gawain sa isang pangunahing lokasyon lamang. Ito ay nagiging isang problema kapag mayroon kang isang malaking halaga ng mga gawain, lalo na kapag naglalaman ang mga ito ng malaking halaga ng data.
Isipin mayroon kang 1000000000 gawain, ang bawat tumitimbang in sa 5k. Iyon, hindi na-compress, sa minimum na 4 terabytes ng imbakan na kinakailangan upang panatilihin lamang na paligid, at makakakuha ka ng napakakaunting.
Katiwala sa kabilang banda ay dinisenyo upang kumuha ng naitutuloy iterator, at hilahin lamang sa isang maximum na bilang ng mga trabaho sa isang pagkakataon (gamit ang karaniwang Python Queue ng). Tinitiyak nito ang isang pare-parehong pattern ng memorya na maaaring masukat linearly.
Paggamit
Lumikha ng iterator, at callback:
-import socket
# Kailangan naming matiyak default na timeout ** hindi nakatakda ** o random tae ay pindutin ang fan.
socket.setdefaulttimeout (Wala)
# Katiwala / example.py
def get_jobs (huling = 0):
& Nbsp; # nakaraang nais na ipadala kung estado ay ipinagpatuloy
& Nbsp; # mula sa nakaraang run
& Nbsp; para sa i xrange (huling, 100,000,000):
& Nbsp; # trabaho yielded dapat na serializeable sa atsara
& Nbsp; ani i
def handle_job (i):
& Nbsp; # ito ** Dapat ** ay idempotent, bilang pagpapatuloy ng proseso ay maaaring isagawa ng trabaho
& Nbsp; # na si Na-tumakbo
& Nbsp; print "Nakakuha% r!" % I
Mga itlog ng isda master:
& Nbsp; tm-master taskmaster.example
Mga itlog ng isda ng alipin:
& Nbsp; tm-alipin taskmaster.example
O mga itlog ng isda 8 mga alipin (bawat naglalaman ng threadpool):
& Nbsp; tm-taskmaster.example mga itlog ng isda 8
Wala tulad ng mahiwagang function na matuklasan para sa master / alipin? Tukuyin ang iyong sariling mga target:
& Nbsp; tm-master taskmaster.example: get_jobs $ tm-alipin taskmaster.example: handle_job
Tandaan: Lahat ng mga argumento ay opsyonal, at magiging default sa localhost na walang auth key
Mga Kinakailangan :.
- Python
Mga Komento hindi natagpuan