Ну это лечилось тривиально. Все воркеры запускаются под супервизором (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
