Обработчик запросов имеет ограниченное время для генерации и возврата ответа на запрос, обычно около 30 секунд. По истечении указанного срока обработчик запроса прерывается.
Среда выполнения Python прерывает обработчик запросов, вызывая DeadlineExceededError
из пакета google.appengine.runtime
. Если обработчик запросов не перехватывает это исключение, как и во всех неперехваченных исключениях, среда выполнения вернет клиенту ошибку сервера HTTP 500.
Обработчик запроса может перехватить эту ошибку, чтобы настроить ответ. Среда выполнения дает обработчику запросов немного больше времени (менее секунды) после вызова исключения для подготовки пользовательского ответа.
from google.appengine.runtime import DeadlineExceededError
class MainPage(webapp.RequestHandler):
def get(self):
try:
# Do stuff...
except DeadlineExceededError:
self.response.clear()
self.response.set_status(500)
self.response.out.write("This operation could not be completed in time...")
Если обработчик не возвратил ответ или не вызвал исключение ко второму сроку, обработчик завершается и возвращается ответ об ошибке по умолчанию.
Хотя на запрос может потребоваться до 30 секунд, App Engine оптимизирован для приложений с кратковременными запросами, обычно такими, которые занимают несколько сотен миллисекунд. Эффективное приложение быстро отвечает на большинство запросов. Приложение, которое плохо масштабируется с помощью инфраструктуры App Engine.
Пакет google.appengine.ext.db
предоставляет следующие классы исключений:
[...]
exception Timeout()
Возникает, когда операция хранилища данных превышает максимально допустимое время для операций хранилища данных.