Google App Engine 连接请求超时错误

Google App Engine connection request timeout error

我正在开发一个显示电影相关数据的 GAE 网络应用程序。
为了获取电影数据,我正在使用来自 OMDB (http://www.omdbapi.com/) 的 API。下面是我用来连接到 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 的一些限制吗?

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

我创建了以下 Web 应用程序来确定 url 从我的应用程序获取的外部 IP 地址显示给 OMDB 服务器。我将以下内容部署到 GAE 以获取 public 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 的请求再次开始工作。

这可能也为您解决了问题,但如果没有,您可能想弄清楚您的 public IP 是什么,然后联系 Brian 看看它是否在被阻止的 IP 范围