я нашел этот вопрос, имея дело с той же проблемой. я придумала другое решение, которое я публикую здесь на случай, если оно пригодится другим.
это не прямая замена того, что вы просите, но это связано - моя проблема заключалась в том, что я хотел знать, когда очередь пуста, потому что это означает, что сложный фоновый процесс завершился. так что я мог бы заменить проверку размера очереди проверкой «таймера мертвецов»
Мертвое время - это таймер, который постоянно сбрасывается каким-либо процессом. когда этот процесс завершается, таймер не сбрасывается и в конце концов истекает. поэтому все различные задачи, которые составляли часть моего сложного фонового процесса, сбрасывали таймер, и вместо проверки, когда очередь была пуста, у меня было задание cron, которое проверялось, когда истекал таймер.
Конечно, чтобы это было эффективным, таймер должен постоянно избегать записи в хранилище данных. код в http://acooke.org/cute/Deadmantim0.html избегает этого, слегка ослабляя поведение и используя memcache для хранения копии объекта таймера и сброса его в хранилище только после того, как прошло значительное количество времени.
ps это более эффективно, чем то, что вы описываете, потому что не нужно так часто записывать в базу данных. это также более надежно, потому что вам не нужно точно отслеживать, что происходит.