Почему я получаю DeadlineExceededException: в моем веб-приложении? - PullRequest
0 голосов
/ 08 октября 2011

Я использую Google App Engine. Раньше все работало нормально, но теперь, когда я вызываю сервлет, браузер отнимает много времени, а затем показывает это:

 DeleteBooksServlet: com.google.apphosting.api.DeadlineExceededException: This request (0000000000000000) started at 2011/10/08 10:58:13.573 UTC and was still executing at 2011/10/08 10:59:13.036 UTC.

В этом сервлете у меня есть запрос, который берет все книги из базы данных и затем удаляет их.

Раньше тот же сервлет работал нормально, но теперь я получаю это. Почему я получаю эту вещь сейчас? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 08 октября 2011

Удаление n книг занимает O (n) время.Когда это время превысит лимит запросов, вам нужно будет ускорить эту операцию.

Очень хороший общий метод - разбить удаления на партии, где партия может удалить, скажем, 100 книг).Затем используйте структуру очереди задач для планирования и запуска пакетов.Некоторые люди идут дальше и используют инфраструктуру MapReduce для управления пакетированием.

2 голосов
/ 08 октября 2011

Поскольку у вас в базе данных так много книг, что запрос занимает много времени (более 1 минуты), и GAE выдает это исключение, когда запрос слишком длинный.

См. http://code.google.com/intl/en-US/appengine/docs/java/runtime.html#Quotas_and_Limits

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...