Зачем так сложно?
В БД делаем поля
status - статус таска (NEW, COMPLETED)
assignee - исполнитель
scheduled - дата до которой исполнитель должен предоставить результат.
Когда выбираем список задач для взятия - используем условие
(status = NEW) AND (assignee IS NULL /*не назначена*/ OR scheduled < NOW() /*истекла*/)
Когда пользователь пытается сохранить результат - проверяем что исполнитель он и что таска не истекла. Если условие не выполнено - не даем сохранить.
И никаких демонов, тем более каждую секунду.