Google App Engine连接请求超时错误

时间:2015-06-03 20:57:04

标签: google-app-engine connection-timeout

我正在开发一个显示电影相关数据的GAE网络应用程序。
为了获取电影数据,我使用的是OMDB中的API(http://www.omdbapi.com/)。。Belel是我用来连接的代码片段API。
当我在本地运行它时它完全正常,但在GAE上部署时不起作用。它会抛出连接超时异常,我尝试增加连接超时时间但是没有工作。

String URLstr = "http://www.omdbapi.com/?t="+URLEncoder.encode(Request,"utf-8");

        URL url=null;

        URLConnection uc = null;
        BufferedReader bf = null;
        try {
            url= new URL(URLstr);
            uc = url.openConnection();
            uc.setConnectTimeout(15* 1000);
            bf = new BufferedReader(new InputStreamReader(uc.getInputStream()));

        } catch (IOException e) {
            throw new IllegalArgumentException(e.getMessage());
        }

我的代码不正确吗?我错过了GAE的一些限制吗?

1 个答案:

答案 0 :(得分:3)

您的代码看起来是正确的。几个星期前,我遇到了与OMDB API和Google App Engine完全相同的问题。我联系了关于这个运行OMDB API的Brian,我认为这与几周前滥用的App Engine IP范围有关。

我创建了以下webapp,以确定从我的应用程序中获取的url提取的外部IP地址是否显示在OMDB服务器上。我将以下内容部署到GAE以获取公共IP。

import webapp2
import logging

from google.appengine.api import urlfetch

class ifconfig(webapp2.RequestHandler):
    def get(self):
        url="http://ipecho.net/plain"
        urlfetch.set_default_fetch_deadline(60)
        result = urlfetch.fetch(url)
        logging.debug("I think my external IP is %s " % result.content)
        self.response.write(result.content)

app = webapp2.WSGIApplication([
    ('/ifconfig', ifconfig)
])

在Google App Engine中,我转到了实例选项卡并关闭了实例,并检查了新实例的外部IP。我这样做了好几次,在我看来,外部IP看起来都来自107.178.195.0/24,所以我把这些信息提供给了OMDB API。

我猜这是在被禁止的IP区块中,Brian能够解锁该范围。这解决了我的问题,并且API的请求再次开始工作。

这可能也解决了你的问题,但如果没有,你可能想知道你的公共IP是什么,并联系Brian看看它是否在被阻止的IP范围内< / p>