У меня есть сервлет Google App Engine, который cron
настроен на запуск один раз в неделю. Так как это займет более 1 минуты времени выполнения, он запускает задачу (то есть другой сервлет task/clear
) в очереди задач по умолчанию для приложения.Как Google App Engine можно предотвратить немедленную перестройку задач после кода состояния 500?
Теперь я наблюдаю следующее: если задача вызывает исключение (например, NullPointerException
внутри своего второго сервлета), это преобразуется в статус HTTP 500 (то есть HttpURLConnection.HTTP_INTERNAL_ERROR
), и Google App Engine, по-видимому, реагирует, немедленно перезапустив тот же снова. Он объявляет это путем печати:
Web hook at http://127.0.0.1:8888/task/clear returned status code 500. Rescheduling..
Я могу видеть, как это иногда может быть feature, но в моем случае это неуместно. Могу ли я попросить, чтобы Google App Engine не выполнял такую автоматическую перепланировку, или я ожидаю, что буду использовать другие коды состояния, чтобы указать условия ошибки, которые не могли бы привести к перепланированию по его правилам? Или это то, что происходит только на dev. сервер?
BTW В настоящее время я также выполняю другие задачи (с разными частотами) в одной очереди задач, поэтому регулирование перенастройки на уровне конфигурации очереди задач будет неудобным (так что я надеюсь, что есть и другой вариант.)
+1 «X-AppEngine-TaskExecutionCount» позволит мне выполнить дополнительную проверку безопасности внутри сервлета. – Drux