Как узнать, какой IP-адрес у доменного имени в Google App Engine? - PullRequest
3 голосов
/ 25 июня 2011

Мне нужно выяснить, к какому IP-адресу фактически подключается мое приложение, когда оно выполняет urlfetch для указанного домена. У моего приложения на рабочем сервере возникают проблемы с подключением к домену, но подключение работает отлично, используя SDK на моем компьютере. Я пытаюсь отладить эту проблему, и мне пришло в голову, что Google App Engine может разрешить домен с другим IP-адресом, чем мой локальный компьютер.

Если бы у меня был доступ к библиотеке сокетов, это было бы так же просто, как socket.gethostbyname ('thedomainiwant.com'), но, к сожалению, Google не разрешает библиотеку сокетов в App Engine.

Есть идеи?

Если есть решение, которое требует Java или Go на App Engine, я тоже хочу попробовать.

Обновление от 26 июня 2011 года:

Я изменил производственный код, чтобы сразу использовать IP-адрес, просто чтобы заставить его работать (и он работал), но это не очень хорошее долгосрочное решение, так как я не контролирую сервер, к которому я делаю urlfetches, чтобы IP может измениться без предупреждения.

Возвращенные заголовки не будут полезны в этом случае, потому что какой-либо IP-адрес, на который рабочий экземпляр разрешает домен, вообще не отвечает, и время ожидания запроса истекло.

Если сервер, на котором я делаю urlfetch, блокирует App Engine, то выполнение urlfetch по IP тоже не будет работать ... но это работает. Кроме того, я поговорил с командой, управляющей сервером, и они подтвердили, что не блокируют App Engine. Я все еще приставаю к ним для получения дополнительной информации, но, похоже, это не проблема.

Обновление от 7 июля 2011 года:

Google подтвердил, что с их стороны возникла проблема, которая затронула мое приложение. Они применили решение и работают над исправлением. Посмотреть здесь: http://code.google.com/p/googleappengine/issues/detail?id=5244

Ответы [ 3 ]

1 голос
/ 27 июня 2011

В настоящее время нет способа сделать разрешение имен в App Engine. Вам нужно будет вызвать внешнюю службу по HTTP, если вы хотите это сделать.

0 голосов
/ 27 июня 2011

Вы можете использовать веб-сервисы, которые выполняют поиск DNS.Вы можете встроить адрес в URL, например, так:

http://www.dnswatch.info/dns/dnslookup?la=en&host=<b>HOST_HERE</b>&type=A&submit=Resolve

(заменить HOST_HERE), а затем проанализировать результат.К сожалению, это HTML, но даже простое регулярное выражение должно сделать это.Вы также можете попытаться найти какой-нибудь сервис, который позволяет выводить XML или около того - таких сервисов много, просто введите в Google «dnslookup», у кого-то может быть такой.

0 голосов
/ 25 июня 2011

Посмотрите на заголовки ответов, вы можете получить заголовок HOST с именно этой информацией.

В противном случае, почему бы просто не использовать необработанные IP-адреса для ваших соединений, пока вы диагностируете это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...