Ну это лечилось тривиально.

Все воркеры запускаются под супервизором (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

Ответить