Повторная задача GAE отложена из-за того, что "экземпляр недоступен", несмотря на то, что он уже выполнен

В нашем приложении GAE мы иногда видим ошибки TombstonedTaskError в отложенных задачах из-за того, что именованные задачи отправляются несколько раз с одинаковыми именами. Кажется, что эти задачи иногда автоматически повторно отправляются GAE, несмотря на успешное выполнение первого отложенного задания.

Пример можно увидеть на этом снимке экрана журнала: задача "refresh_stock_status-1451012400-GNeg-complete-poll-2" была отправлена ​​утром 25 декабря и выполнена 12-25 07:35:05. Затем по какой-то причине задача была автоматически повторена GAE ("X-Appengine-Taskretrycount:1") в 07:35:18, причем указанная причина была "X-Appengine-Taskretryreason:Instance Unavailable". Ясно, что экземпляр (с идентификатором, оканчивающимся на "...2976") был доступен, и задача уже выполнена. Почему это повторили так? Что можно сделать, чтобы предотвратить это? Хотя эти ошибки встречаются редко, они по-прежнему вводят в заблуждение, и их проверка требует времени во время мониторинга нашего приложения.

Единственная похожая ситуация, описанная мной в Интернете, описана по адресу https://groups.google.com/forum/. Однако не было предложено никакого решения, кроме как с настройкой масштабирования экземпляра (которая могла бы уменьшить частоту появления ошибок), что в нашем случае могло бы иметь слишком много побочных эффектов.

1 ответ

Решение

После того, как вы связались со службой поддержки Google, выяснилось, что причина в том, что очень редко отложенные задачи могут выполняться несколько раз с помощью GAE. Это означает, что задачи должны быть реализованы таким образом, чтобы их можно было безопасно выполнять несколько раз без каких-либо ошибок, что было не для нас (так как мы предполагали, что задачи будут выполняться только один раз).

Другие вопросы по тегам