Google App Engine Перейти HTTP-запрос на медленную страницу - PullRequest
2 голосов
/ 29 октября 2011

Я хочу сделать HTTP-запрос с помощью Google App Engine в Go на медленно отвечающий веб-сайт. Мой код:

func request(w http.ResponseWriter, r *http.Request) {
    c:=appengine.NewContext(r)
    client := urlfetch.Client(c)
    resp, err := client.Get("http://www.example.com")
    if err != nil {
        log.Print("err %s", err.String())
        return
    }
    ...}

После звонка на мой сайт я получаю такую ​​ошибку:

API error 1 (urlfetch: INVALID_URL): ApplicationError: 5 timed out

После просмотра bi я нашел ссылку на Транспортный класс , который позволяет ждать HTTP-запросов в течение до 60 секунд , но я не могу найти описание или пример того, как заставить это работать.

Как я могу сделать HTTP-запрос в GAE Go, который будет иметь срок более 5 секунд?

Ответы [ 2 ]

5 голосов
/ 13 декабря 2011

Я бы порекомендовал, если возможно, выполнять urlfetch вне вашего основного обработчика запросов, используя API Tasks Queue * .

. При создании urlfetch.Transport вы должны иметь возможность переопределить крайний срок по умолчанию.как это:

t := urlfetch.Transport{Context:c, DeadlineSeconds: 5.0}
client := http.Client{Transport: &t}
0 голосов
/ 29 октября 2011

Удаленные сайты иногда работают медленно из-за разрешения DNS. Использование IP-адреса может помочь (разрешите целевой хост перед подключением к http://a.b.c.d).

Я не знаю, позволяет ли Go определить более длительное значение тайм-аута. Что вы можете сделать, это опросить несколько раз, пока не получите ответ (или не истек счет повторных попыток).

В любом случае, удачи.

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