как я могу получить доступ к списку задач в GAE?

Я планирую использовать API TaskQueue GAE для обновления кэша HTML-страниц, которые я сохраняю в хранилище данных (и в кэше памяти, но хранилище данных более надежно).

Раз в неделю я добавляю/редактирую некоторые данные, и мне нужно регенерировать связанные HTML-страницы, и запуск задач — это способ сделать это.

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

Проблема в том, что мне не нужно добавлять задачу для повторного создания страницы X, если в очереди уже есть задача для повторного создания страницы X через час. Таким образом, мне нужно проверить список задач и посмотреть, есть ли он уже.

Как я могу получить доступ к списку задач?


person Nuno Cardoso    schedule 16.09.2010    source источник


Ответы (2)


Я видел, что добавление той же задачи вызовет ошибку DuplicateTaskNameError, возможно, это все, что мне нужно.

person Nuno Cardoso    schedule 16.09.2010
comment
Правильно - это цель названий задач. Обратите внимание, что вам также необходимо поймать TombstonedTaskNameError, если задача уже запущена. - person Nick Johnson; 16.09.2010

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

person dunelmtech    schedule 16.09.2010
comment
Во-первых, некоторые страницы сложно генерировать, иногда они проходят 30-секундный срок, поэтому их лучше отображать в автономном режиме. Во-вторых, я могу использовать квоту для байтов в TaskQueue, чтобы убедиться, что мой кеш всегда свежий. Но да, это поведение по умолчанию. - person Nuno Cardoso; 17.09.2010