Как определить, существует ли задача уже в очереди извлечения GAE?

Прежде чем добавить задачу в очередь извлечения, я должен подтвердить, существует ли уже та же задача в очереди, если она существует, следует пропустить добавление задачи в очередь. Добавление задачи с именем не работает для меня, так как срок ее действия истекает, пока семь дней из очереди даже не будут удалены.

Мы можем перечислить задачи, используя REST API. Таким же образом, можем ли мы получить список задач в модуле GAE или есть какой-либо другой способ узнать, существует ли задача в очереди в модуле Google App Engine?

Спасибо

1 ответ

Если имена задач не работают с логикой вашего приложения, вы можете создать соответствующий объект db (пустой, просто ключ), который будет служить признаком того, что задачи находятся в очереди. Вы должны поместить его в базу данных в транзакции с задачей и удалить после завершения задачи.

Это будет стоить вам 1 операции чтения и 4 записи (2 для вставки и 2 для удаления) для каждой задачи - ничего не получается бесплатно.

В качестве альтернативы вы можете рассмотреть возможность использования счетчика в вашей бизнес-сущности, который будет частью имени задачи.

Допустим, у вас есть сущность User и свойство TaskCounter.

Тогда вы бы добавили задачу как:

tasks.add (taskName = "TASKNAME" + str (user.id) + str (user.TaskCounter)) - это гарантирует, что у вас может быть только 1 активная задача на объект. Конечно, вам нужно будет обновить свойство после завершения задачи. Если вы все равно обновите сущность в задаче, это почти ничего не будет вам стоить.

Другие вопросы по тегам