【发布时间】:2011-07-08 13:50:37
【问题描述】:
当我的应用程序对提供的域进行 urlfetch 时,我需要弄清楚我的应用程序实际连接到哪个 IP 地址。我在生产服务器上的应用程序在连接到域时遇到问题,但使用我计算机上的 SDK 连接工作正常。我正在尝试调试此问题,但我突然想到 Google App Engine 可能会将域解析为与我的本地计算机不同的 IP 地址。
如果我可以访问套接字库,这将像 socket.gethostbyname('thedomainiwant.com') 一样简单,但不幸的是,Google 不允许在 App Engine 上使用套接字库。
有什么想法吗?
如果有需要在 App Engine 上使用 Java 或 Go 的解决方案,我也愿意尝试。
2011 年 6 月 26 日更新:
我将生产代码更改为直接使用 IP 只是为了让它正常工作(并且确实如此)但这不是一个好的长期解决方案,因为我不控制我正在制作 urlfetches 的服务器,所以 IP可能会在没有警告的情况下改变我。
在这种情况下,返回的标头将无济于事,因为生产实例将域解析到的任何 IP 地址根本没有响应并且请求超时。
如果我正在执行 urlfetches 的服务器阻止了 App Engine,那么通过 IP 执行 urlfetch 也不会工作......但它确实有效。此外,我与管理服务器的团队进行了交谈,他们确认他们没有阻止 App Engine。我仍在纠缠他们以获取更多信息,但这似乎不是问题。
2011 年 7 月 7 日更新:
Google 已确认他们的问题影响了我的应用程序。他们已经应用了解决方法并正在修复。看这里: http://code.google.com/p/googleappengine/issues/detail?id=5244
【问题讨论】:
-
这类问题通常是由目标主机阻塞 App Engine IP 引起的,通常是自动发生的,因为很多不同的应用程序都试图从同一个 IP 地址访问它,这看起来像是滥用。跨度>
-
@Wooble 这是我的第一个怀疑,所以我检查了一下,他们并没有阻止 App Engine。此外,通过 IP 直接连接也可以。