drywer is 'n eenvoudige versprei tou ontwerp vir die hantering van groot getalle van een-off take.
Ons het hierdie by Disqus gereelde te hanteer, maar ongewoon take soos "migreer hierdie inligting aan 'n nuwe skema".
Hoekom?
Jy mag dalk vra, "Hoekom nie Seldery gebruik?". Wel, die antwoord is eenvoudig dat normale toustaan vereis (nie letterlik nie, maar dit wil pynlike sonder wees) wat jy al die take te buffer in 'n sentrale plek. Dit word 'n probleem wanneer jy 'n groot bedrag van take, veral wanneer dit bevat 'n groot hoeveelheid van die data.
Stel jou voor jy het 1000000000 take, elke gewig in by 5k. Dis, ongecomprimeerd, ten minste 4 terabyte van die stoor vereis net dat sowat hou, en kry jy baie min.
Leermeester aan die ander kant is ontwerp om 'n resumable Iterator te neem, en net trek in 'n maksimum aantal poste op 'n tyd (met behulp van standaard Python Queue's). Dit verseker 'n konstante herinnering patroon wat lineêr kan skaal.
Gebruik
Skep 'n Iterator en terugbel:
invoer socket
# Ons moet ** verseker verstek timeout ** is nie stel of ewekansige kak sal die fan getref.
socket.setdefaulttimeout (Geen)
# Drywer / example.py
def get_jobs (laaste = 0):
& Nbsp; # verlede sou gestuur word indien die staat hervat
& Nbsp; # uit 'n vorige lopie
& Nbsp; want Ek in xrange (laaste, 100,000,000):
& Nbsp; # werkgeleenthede opgelewer moet serializeable met piekel wees
& Nbsp; opbrengs i
def handle_job (i):
& Nbsp; # Hierdie ** moet ** idempotente word, as die hervatting van die proses kan 'n werk uit te voer
& Nbsp; # wat reeds hardloop
& Nbsp; druk "Got% r!" % I
Kuit 'n meester:
& Nbsp; tm-meester taskmaster.example
Kuit 'n slaaf:
& Nbsp; tm-slaaf taskmaster.example
Of kuit 8 slawe (elk met 'n threadpool):
& Nbsp; tm-kuit taskmaster.example 8
Moenie soos die magiese funksie ontdek meester / slaaf? Spesifiseer jou eie teikens:
& Nbsp; tm-meester taskmaster.example: get_jobs $ tm-slaaf taskmaster.example: handle_job
Nota: Alle argumente is opsioneel, en sal die standaard te localhost met geen auth sleutel
Vereistes :.
- Python
Kommentaar nie gevind