>> SELECT ... FOR UPDATE; Это очень похоже на то, что мне нужно
>> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к таблице, и удаляются при потере соединения. А насколько это переносимо под другие РСУБД? >> Все воркеры запускаются под супервизором (runit), и при старте он проверяет >> очередь на задачи, маркированные тем же ip, но другим pid, и снимает с них >> пометку. А если при следующем запуске процесс получит тот же pid? 6 августа 2012 г., 13:54 пользователь Akzhan Abdulin <[email protected]> написал: > Ну это лечилось тривиально. > > Все воркеры запускаются под супервизором (runit), и при старте он проверяет > очередь на задачи, маркированные тем же ip, но другим pid, и снимает с них > пометку. > > 6 августа 2012 г., 13:42 пользователь Sergey Leschenko <[email protected]> > написал: > >> > Сначала делал UPDATE таблицы, а потом выбирал нужные записи. >> >> Минус этого варианта в том, что если worker умрет, надо вернуть задачи >> обратно в очередь. >> >> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к >> таблице, и удаляются при потере соединения. >> Читаем задачу, формируем имя лока, пробуем залочить - получилось - >> выполняем, не получилось - переходим к следующей задаче. >> >> -- >> Sergey >> -- >> Moscow.pm mailing list >> [email protected] | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- С уважением, Александр Личный блог: http://eax.me/ Мой форум: http://it-talk.org/ Мой Twitter: http://twitter.com/afiskon -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
