надзирател е проста разпределени опашка предназначен за обработка на голям брой еднократни задачи.
Ние изградихме този най Disqus да се справят често, но не чести задачи като "мигрират тези данни в нов схема".
<Силен> Защо? Силен>
Може да попитате: "Защо не използвате Целина?". Ами отговорът е просто, че нормалната опашка изисква (не буквално, но то ще бъде болезнено без) можете да буферира всички задачи в централна локация. Това се превръща в проблем, когато имате голямо количество задачи, особено когато те съдържат голямо количество данни.
Представете си, че имате 1000000000 задачи, всяка с тегло от 5 км. Този, некомпресиран, при минимум 4 терабайта съхранение, необходими само за да поддържат, че наоколо, и ще ви печели много малко.
Надзирател от друга страна е предназначена да отнеме resumable итератор, и дръпнете само в максимален брой работни места в момент, (като се използва стандартна Python Queue е). Това гарантира постоянен модел памет, която може да мащабирате линейно.
<Силен> Usage
Създайте итератор, и обратно повикване:
гнездо за внос
# Трябва да гарантираме подразбиране таймаут ** Не е зададен ** или случайни неща ще удари вентилатора.
socket.setdefaulttimeout (None)
# Надзирател / example.py
ДЕФ get_jobs (миналата = 0):
& Nbsp; # последната ще бъде изпратена, ако държавната бе възобновено
& Nbsp; # от предишни план
& Nbsp; защото в xrange (последното, 100000000):
& Nbsp; # работни места дадоха трябва да serializeable с туршия
& Nbsp; добив I
Def handle_job (и):
& Nbsp; # настоящия ** мъст ** се idempotent, като възобновяване на процеса може да изпълни работа
& Nbsp; #, че вече е разработен
& Nbsp; печат "Got% R!" % I
Хайвер, майстор:
& Nbsp; TM-майстор taskmaster.example
Хайвер, роб:
& Nbsp; TM-роб taskmaster.example
Или хвърлят хайвера 8 роби (всеки от които съдържа threadpool):
& Nbsp; TM-мицел taskmaster.example 8
Съм като магическата функция открият за водач / подчинен? Посочете вашите собствени цели:
& Nbsp; TM-майстор taskmaster.example: get_jobs $ TM-роб taskmaster.example: handle_job
<Силен>
Забележка: силни> Всички аргументи са по желание, и по подразбиране ще Localhost, без ключ AUTH
<силни> Изисквания :.
- Python
Коментари не е намерена