SocketTimeoutException с использованием URLFetch для службы, которая отправляет сообщения канала - PullRequest
3 голосов
/ 13 января 2012

У нас есть два приложения AppEngine (Java).Один из них использует URLFetch для другого, чтобы создать встречу.В приемнике мы добавили функцию, в которой мы используем API канала, чтобы узнать, есть ли открытые каналы, и сообщить им о новых данных.

Сбой вызова URLFetch с SocketTimeoutException.Весь код в получателе выполняется (включая все открытые каналы, о которых идет уведомление), но вызывающее приложение все еще получает исключение SocketTimeoutException.Когда я закомментирую строку уведомления канала, ошибки не будет.

Это происходит только в развернутом приложении, а не в режиме разработки.Кроме того, вызов не подходит к достижению 60-секундного (или даже старого 10-секундного) тайм-аута, разрешенного URLFetch.

1 Ответ

0 голосов
/ 07 июня 2012

Срок по умолчанию для urlfetch составляет 5 с, поэтому, если вашему приложению потребуется более 5 с для загрузки и выполнения обработчика, оно вернет SocketTimeoutException.

Как описано в документации , вы можете установить более длительный срок для вызова urlfetch, используя setConnectTimeout или setReadTimeout

Кроме того, рекомендуется переместить вызов API, который можно отложить (т. Е. Не нужно создавать HTTP-ответ), в очередь задач :

  • Крайний срок для запроса очереди задач длиннее (10 минут вместо 60 с)
  • задание будет повторено в случае неудачи
  • Время ожидания urlfetch тоже больше (10 минут)
...