Я пишу отложенное задание, которое предназначено для создания файла в хранилище блогов для загрузки.Я моделирую код на примере, приведенном в документации:
http://code.google.com/appengine/articles/deferred.html
Идея состоит в том, чтобы структурировать код так, чтобы при возникновении DeadlineExceededError обработчик мог привести в порядок и запуститьновая отложенная задача, которая будет продолжена позже.
Что я хотел бы знать, когда именно это исключение может быть выдано?Существуют ли какие-либо операции, которые гарантированно будут атомарными и, следовательно, не будут прерваны?
В примере (указанном выше) они обновляют переменную с именем start_key по завершении обработки каждой записи, но говорят, что основной цикл был прерванмежду расширением списков to_put и to_delete тогда данные будут неправильными, так как они будут пропускать набор удалений.
Если исключение может быть вызвано в любой точке, то это может быть на полпути через batch_write,или между db.put и очисткой списка to_put.
Это логически эквивалентно проблеме безопасности потока, для ее решения обычно используются гарантированные атомарные операции и неатомарные операции.
Как это работает?
Спасибо