Някои основни въпроси относно „отложена работа“

Опитвам delayed_job сега и имам някои въпроси.

От страницата http://github.com/collectiveidea/delayed_job мога да видя малко информация:

Работниците могат да работят на всеки компютър, стига да имат достъп до базата данни и часовникът им да е синхронизиран. Имайте предвид, че всеки работник ще проверява базата данни поне на всеки 5 секунди.

  1. Когато извикам rake jobs:work веднъж, това ще създаде ЕДИН работник, нали?

  2. Когато работник проверява базата данни, той ще прочете ВСИЧКИ нови и неуспешни задачи ВСЕКИ ПЪТ и ще ги изпълни?

  3. пише, че работник ще проверява базата данни на всеки 5 секунди, мога ли да направя 2 секунди?

  4. Когато създам работник (rake jobs:work), вече има 10 задачи в базата данни и всяка ще отнеме 3s. Колко процеса ще създаде DelayedJob? И колко секунди са необходими общо?


person Freewind    schedule 11.07.2010    source източник


Отговори (1)


  1. да
  2. да
  3. Delayed::Worker.sleep_delay = 2
  4. 1 работник ще работи по всяка задача на свой ред, като я издържа или проваля, преди да премине към следващата. Общо 30 секунди + колкото и дълги да са 9 забавяния на заспиване за общото време (45 сек. по подразбиране). Не съм сигурен как да отговоря на въпроса ви относно процесите. Създава се 1 работник, който е процес. Могат да бъдат създадени нула или повече други процеси в зависимост от това каква е задачата, която трябва да се изпълнява.
person x1a4    schedule 11.07.2010
comment
@x1a4, благодаря ти. И можете ли да видите актуализирания ми въпрос, има още един въпрос :) - person Freewind; 11.07.2010
comment
Има ли все пак да се ускори? Искам да кажа, могат ли тези задачи да се изпълняват паралелно? - person Freewind; 11.07.2010
comment
Съжаляваме, въпрос 4 е актуализиран. Засега общото време трябва да е 30 секунди, нали? - person Freewind; 11.07.2010
comment
30 секунди плюс времето за заспиване между всяка задача (което по подразбиране е общо допълнителни 45 секунди) - person x1a4; 11.07.2010
comment
30 + 5*9? Искате да кажете, че въпреки че работникът има 10 задачи, но ще заспи за 5 секунди (по подразбиране) след изпълнение на всяка задача? - person Freewind; 11.07.2010
comment
Ако в базата данни има 10 задачи, колко задачи ще получава дадена работа всеки път? ЕДИН? или ДЕСЕТ? - person Freewind; 11.07.2010
comment
Искате да кажете, че въпреки че работникът има 10 задачи, но ще заспи за 5 секунди (по подразбиране) след изпълнение на всяка задача? - Да точно - person x1a4; 12.07.2010
comment
Ако в базата данни има 10 задачи, колко задачи ще получава дадена работа всеки път? ЕДИН? или ДЕСЕТ? Добре, 10 задачи и стартирате 1 работник. Този работник грабва първата незавършена задача в опашката, която е настроена за изпълнение, и се опитва да я направи. Ако е успешно, се записва и по подразбиране се премахва от опашката. Ако не успее, това се записва и се задава времево клеймо за следващото изпълнение. (продължение в следващия коментар, хех.) - person x1a4; 12.07.2010
comment
Тази първа задача се счита за „свършена“ засега и същият работник сега спи за тези 5 секунди по подразбиране, след което грабва следващата задача в опашката и я изпълнява. Така че един и същ работник в крайна сметка ще се опита да изпълни всичките 10 задачи. Ако всички преминат, никой от тях няма да бъде стартиран отново. Всяка неуспешна задача ще бъде изпробвана до 20 пъти по подразбиране, преди да бъде окончателно неуспешна. Всичко това ще бъде направено от един работник. Ако използвате няколко работници, dj ще следи и ще се увери, че няколко работници не се опитват да изпълняват една и съща задача (чрез заключване на задачата, така че работникът просто ще премине към следващия, ако го види.) - person x1a4; 12.07.2010
comment
Параметърът sleep_delay е колко често Delayed_Job проверява таблицата за нови задания. Не е важно колко време спи между работните места. Може би така е работило, но вече не. Можете да зададете колко задачи DJ изтегля всеки път, когато проверява, което е зададено на 5 по подразбиране. Ако зададете това на 1, то ще заспива за 5 секунди между всяко задание. Ако четеш всеки път по 10 работи, то в този случай изобщо няма да спи. - person Lev; 18.02.2015