2011-10-29 34 views
2

我想在转到响应缓慢的网站时使用Google App Engine发出HTTP请求。我的代码是: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 
    } 
    ...} 

叫我的网站后,我得到这样一个错误:

​​

寻找双成之后,我发现了一些参考Transport class允许等待HTTP请求up to 60 seconds,但我找不到任何说明或示例如何使这项工作。

如何在GAE Go中创建HTTP请求,该请求的截止时间超过5秒?

回答

5

我会推荐如果可能的话,使用Tasks Queue API在您的主要请求处理程序之外执行urlfetch。

在构建urlfetch.Transport,你应该能够覆盖默认的期限是这样的:

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

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

我不知道Go是否允许您定义更长的超时值 - 您可以做的是轮询多次,直到您收到答复(或已过期重试计数)为止。无论如何,祝你好运。

相关问题