Можно ли перепланировать задачу очереди задач ядра приложения?

Во время вызова API я планирую выполнение задачи через n минут. Я называю задачу.

Другой вызов API, если он будет выполнен, удалит задачу.

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

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

(Даже если я заставлю его работать, я хочу убедиться, что это произошло благодаря поддерживаемой функциональности. Система обрабатывает реальные платежи.)

Спасибо за ваш вклад. /Александр


person yngling    schedule 11.04.2014    source источник


Ответы (2)


Насколько мне известно, вы не можете повторно использовать имена задач в течение достаточно долгого времени.

В настоящее время нет определенного времени захоронения для задач,

См. раздел Как долго имена задач удаляются в AppEngine?

См. также Что такое TombstonedTaskError из очереди задач App Engine? предполагает, что имена хранятся до 7 дней.

Я думаю, вам нужно найти альтернативный метод для того, что вы пытаетесь сделать, или уточнить свой вариант использования, и, возможно, есть лучший/альтернативный подход.

person Tim Hoffman    schedule 11.04.2014

Когда я протестировал использование именованных задач, я не смог за короткое время создать новую задачу с тем же именем, ни за несколько минут... Я думаю, вы можете использовать смесь переменных cron и переменных, хранящихся в объекте хранилища данных. , cron, чтобы каждый раз просматривать переменные состояния в хранилище данных и запускать любую задачу, если это необходимо.

person Walter    schedule 25.04.2014