как называется исключение тайм-аута в App Engine? - PullRequest
3 голосов
/ 29 мая 2009

По какой-то причине у меня сложилось впечатление, что он просто называется Тайм-аут, но, похоже, его нет.

Спасибо!

Ответы [ 2 ]

7 голосов
/ 29 мая 2009

Для вызовов хранилища данных исключение составляет google.appengine.ext.db.Timeout. Для общей продолжительности (настенные часы) исключение составляет google.appengine.runtime.DeadlineExceededError. Ошибка DeadlineExceeded выдается «мягкой» один раз, после чего у вас есть короткое время, чтобы вернуть ответ и выйти; если вы этого не сделаете, он снова выдается, не может быть пойман, и ваш сценарий бесцеремонно прерван.

3 голосов
/ 29 мая 2009

Обработка исключений тайм-аута описана в разделе Таймер запроса документов:

Обработчик запросов имеет ограниченное время для генерации и возврата ответа на запрос, обычно около 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.

В хранилище данных есть собственное исключение TimeOut

Пакет google.appengine.ext.db предоставляет следующие классы исключений:

[...]

exception Timeout()
Возникает, когда операция хранилища данных превышает максимально допустимое время для операций хранилища данных.

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