Google App Engine将HTTP请求发送到慢速页面

时间:2011-10-29 14:48:53

标签: http google-app-engine go

我想使用Google App Engine在转到响应缓慢的网站上发出HTTP请求。我的代码是:

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之后,我发现了Transport class的一些引用,它允许等待up to 60 seconds的HTTP请求,但是我找不到任何有关如何使其工作的说明或示例

如何在GAE Go中发出一个截止日期超过5秒的HTTP请求?

2 个答案:

答案 0 :(得分:5)

我建议尽可能使用Tasks Queue API在主请求处理程序之外进行urlfetch。

构建urlfetch.Transport时,您应该可以覆盖默认的截止日期:

t := urlfetch.Transport{Context:c, DeadlineSeconds: 5.0}
client := http.Client{Transport: &t}

答案 1 :(得分:0)

由于DNS解析,远程站点有时会很慢。使用IP地址可能有所帮助(在连接到http://a.b.c.d之前解析目标主机)。

我不知道Go是否允许您定义更长的超时值 - 您可以做的是多次轮询,直到您收到回复(或者您的重试次数已过期)。

祝你好运。