Брант Слаткин выступил с аналогичным докладом на I / 0 2010 .
Я не знаю, что он когда-либо рассказывал, как и когда это могло произойти. Он утверждал, что из-за того, как работают очереди задач, можно задавать задачи для повторного создания. Из-за этого вам нужно написать свои задачи, чтобы это не вызывало проблем, если это произойдет.
Например, допустим, у вас есть задача, которая отправляет электронное письмо, а затем увеличивает счетчик в хранилище данных. Если в вашем коде произошла ошибка ИЛИ, если хранилище данных не работало, электронная почта может быть успешно отправлена, но запись в хранилище данных не удалась. Если вы не обработали ошибку из Datastore в своем коде, обработав исключение, сбой записи в Datastore приведет к тому, что ваша задача вернет код состояния HTTP 500. Очередь задач предназначена для повторного помещения задачи в очередь, если она возвращает код состояния > 299. Это приведет к тому, что ваша задача будет выполняться снова и снова, пока запись в хранилище данных не будет успешной. Это означает, что кто-то получит много дубликатов электронных писем.
Я думаю, что строка "Возможно, что задача может быть запущена дважды ..." была просто способом сказать, что App Engine не гарантирует защиту от этого, поэтому вам нужно убедиться, что вы позаботились об этом в своем коде. .