Методы класса для того, когда у Вас должны быть методы, которые не характерны ни для какого конкретного экземпляра, но все еще включают класс в некотором роде. Самая интересная вещь о них состоит в том, что они могут быть переопределены подклассами, что-то, что это просто не возможно в статических методах Java или функциях уровня модуля Python.
, Если у Вас есть класс MyClass
, и функция уровня модуля, которая воздействует на MyClass (фабрика, тупик внедрения зависимости, и т.д.), делает его classmethod
. Тогда это будет доступно подклассам.
Вам необходимо изменить порядок размещения заказов, чтобы не было временного окна.
Consumer POP (каждый потребитель имеет уникальный $ consumer_id)
Update queue
set last_pop = '$consumer_id'
where last_pop is null
order by id limit 1;
$job =
Select * from queue
where last_pop = '$consumer_id'
order by id desc
limit 1;
Поставщик PUSH
insert into queue
(id, last_pop, ...)
values
(NULL, NULL, ...);
Очередь упорядочена во времени столбцом id и назначается при POP идентификатору пользователя.
Для информации, есть еще один вариант - использовать Gearman вместо таблицы для создания очереди: Расмус Лердорф написал об этом очень хорошую статью .