У меня длинная очередь mysql. У меня есть 1 рабочий скрипт, который обрабатывает каждую очередь.
но поскольку этот работник работает, база данных может обновляться или получать новые вставки строк.
пример рабочего скрипта
get_current_queue = SELECT from queue...
while(get_current_queue) {
update_current_row_from_queue "processing"
//some cpu intensive processing here that takes varying amount of time.
}
проблема в том, что рабочий скрипт занимает различное количество времени в зависимости от того, сколько времени занимает очередь в данный момент времени и сколько времени занимает обработка каждого процессора (конвертирование видео, например)
поэтому, когда я запускаю другой рабочий сценарий, пока выполняется первый, очередь, еще не помеченная первым рабочим в базе данных очередей, попадет в список задач второго рабочего.
Я не знаю, как решить эту проблему.
когда рабочий запускается, мне нужен какой-то способ пометить этот пакет, чтобы его мог запускать только этот работник.
и пока он работает, после вставки новых строк, если я решу запустить другого работника, он может работать.