Как я могу получить доступ к списку задач в GAE?
Я планирую использовать GAE TaskQueue API для обновления моего кэша HTML-страниц, которые я сохраняю в хранилище данных (и в memcache, но хранилище данных более надежно).
Раз в неделю я добавляю / редактирую некоторые данные, и мне нужно регенерировать связанные HTML-страницы, а запуск задач - это способ сделать.
Обратите внимание, что различные изменения могут подразумевать изменение одной и той же кэшированной страницы. Например, на домашней странице есть фрагменты из нескольких частей из разных данных. Я хочу запускать задачи в очереди задач с задержкой (например, с помощью обратного отсчета до часа), чтобы я мог накопить несколько правок, и в итоге кэшированные страницы будут регенерированы только один раз.
Проблема в том, что мне не нужно добавлять задачу для регенерации страницы X, если уже есть задача, поставленная в очередь для регенерации страницы X через час. Таким образом, мне нужно проверить список задач и посмотреть, есть ли он уже.
Как я могу получить доступ к списку задач?
2 ответа
Я видел, что добавление одной и той же задачи вызовет ошибку DuplicateTaskNameError, возможно, это все, что мне нужно.
Всякий раз, когда вы делаете редактирование, вы можете просто удалить элемент из кэша. Затем, когда кто-то приходит, чтобы прочитать страницу, вы заметите, что ее нет в кеше, и извлечете ее из хранилища данных в этот момент и обновите кеш новыми данными. В любом случае у вас уже должна быть такая логика, поскольку вы не всегда можете гарантировать, что элемент будет в кеше. Это повлияет на скорость первой выборки после того, как вы сделаете обновления, но после этого все будет хорошо.