Специально для [livejournal.com profile] staranchenko

Apr. 28th, 2009 10:14 am
beldmit: (Программизм)
[personal profile] beldmit
Серега, тебе будет интересно - речь про обработу очереди. И Богуку покажу.

Раз: http://yakov-sirotkin.livejournal.com/103083.html

Два: http://dmih.livejournal.com/429785.html

Три (по наводке из предыдущей): http://dklab.ru/chicken/nablas/53.html

Кстати, коллеги - IT-шники, [livejournal.com profile] dmih рекомендую всячески, очень здравый подход.

Date: 2009-04-28 11:32 am (UTC)
From: [identity profile] ask-ripe.livejournal.com
дима, а давай я как-нибудь к вам заеду и расскажу почему все трое (ок, только яков и дмих) ахтунги...
gor

Date: 2009-04-28 11:43 am (UTC)
From: [identity profile] beldmit.livejournal.com
Ну давай...

Date: 2009-04-28 03:31 pm (UTC)
From: [identity profile] staranchenko.livejournal.com
По поводу первого пункта. Я не очень понял автора, если честно. :-) У меня это делается так: выбираем N первых заданий, соответствующих критериям (порядок создания, приоритет, отсутствие зависимостей, задание не взято в обработку и пр.), пробегаем по ним циклом и пытаемся заблокировать одно из них, если получилось - прописываем, что взяли задание в обработку (в случае PostgreSQL это PID + дата старта backend-процесса PostgreSQL) и возвращаем заблокированное задание. Соответственно, критерий "взято в обработку" реализован как "существует процесс с таким PID и датой старта в момент выборки". При успешном выполнении задание удаляется, в случае неуспеха откладывается на какое-то время. Такой подход дает возможность брать задания в несколько потоков, исключить выполнения задания дважды и даже не иметь зависших локов при падении серверных процессов.

По поводу второго и третьего пунктов. Такой подход применим только для примитивных систем. Зависимости между заданиями, например, там невозможны.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 09:28 pm
Powered by Dreamwidth Studios