[Moscow.pm] Получение задач из РСУБД

Alexandr Alexeev afiskon на gmail.com
Пн Авг 6 03:07:23 PDT 2012


>> SELECT ... FOR UPDATE;

Это очень похоже на то, что мне нужно

>> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к
таблице, и удаляются при потере соединения.

А насколько это переносимо под другие РСУБД?

>> Все воркеры запускаются под супервизором (runit), и при старте он проверяет очередь на задачи, маркированные тем же ip, но другим pid, и снимает с них пометку.

А если при следующем запуске процесс получит тот же pid?

6 августа 2012 г., 13:54 пользователь Akzhan Abdulin
<akzhan.abdulin на gmail.com> написал:
> Ну это лечилось тривиально.
>
> Все воркеры запускаются под супервизором (runit), и при старте он проверяет
> очередь на задачи, маркированные тем же ip, но другим pid, и снимает с них
> пометку.
>
> 6 августа 2012 г., 13:42 пользователь Sergey Leschenko <sergle.ua на gmail.com>
> написал:
>
>> > Сначала делал UPDATE таблицы, а потом выбирал нужные записи.
>>
>> Минус этого варианта в том, что если worker умрет, надо вернуть задачи
>> обратно в очередь.
>>
>> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к
>> таблице, и удаляются при потере соединения.
>> Читаем задачу, формируем имя лока, пробуем залочить - получилось -
>> выполняем, не получилось - переходим к следующей задаче.
>>
>> --
>> Sergey
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon


Подробная информация о списке рассылки Moscow-pm