Движок приложения Google ApplicationError: 2 нечисловой порт: ''

1

Я получаю Nonnumeric port ApplicationError: 2: "случайным образом около 1/10 моего запроса на url, все остальное отлично работает, я видел, что это ошибка, но мне еще нужно найти какие-либо решения, у кого есть какие-то мысли почему это происходит? Я запускаю python 2.5.4 и google app engine 1.3.3

вот какой-то общий код, который возникает при случайном запросе страниц

def overview(page):
     try:
          page = "http://www.url.com%s.json?" %page
          u = urllib.urlopen(page.encode('utf-8'))
          bytes = StringIO(u.read())
          u.close()
     except Exception, e:
          print e
          return None
     try:
        JSON_data = json.load(bytes)
        return JSON_data
     except ValueError:
        print "Couldn't get .json for %s" % page
        return None  
  • 0
    Как обстоят дела с% s в URL, который назначается переменной страницы. % s обычно хочет заменить его на значение, но в операторе нет переменной для замены. % S может выглядеть как неправильный номер порта для парсера URL.
  • 0
    woops yes, я убрал это, поскольку я удалял определенные URL, которые я собирался сделать, чтобы сделать код универсальным. Я исправлю это очень быстро
Показать ещё 1 комментарий
Теги:
google-app-engine

1 ответ

1
Лучший ответ

Пара вещей с кодом, который может быть проблемой. Один из них заключается в том, что вы ничего не делаете с входящим значением страницы, но оно переписывается с помощью функции fort fort внутри вашего блока try. Кроме того, как я отметил в своем комментарии,% s в задании хочет иметь переменную, чтобы заменить ее вместо нее. Вероятно, это то, что вы собираетесь использовать со значением, входящим в параметр страницы. Попробуйте следующее:

def overview(page_to_get):
     try:
          page = "http://www.url.com%s.json?" % page_to_get
          u = urllib.urlopen(page.encode('utf-8'))
          bytes = StringIO(u.read())
          u.close()
     except Exception, e:
          print e
          return None
     try:
        JSON_data = json.load(bytes)
        return JSON_data
     except ValueError:
        print "Couldn't get .json for %s" % page
        return None 

EDIT:

@user291071: Я бы предположил, что некоторые из этих значений, которые появляются на странице параметров обзора, не начинаются с ведущей косой черты. Единственный способ убедиться, что парсер URL-адресов не пытается интерпретировать добавленную информацию в качестве номера порта, чтобы убедиться, что он начинается с/или. возможно, это будет работать лучше для вас:

          page = "http://www.url.com/%s.json?" % page_to_get

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

  • 0
    извините, мой код может не быть понятным, страница или page_to_get будет расширением url.com, например, url.com/random/bla/1, в основном то же самое, что вы сделали выше, за исключением того, что я просто переназначил Я знаю, что мои URL-адреса верны, но они случайно получают ошибки порта при получении страницы. Плюс при запуске все, что я вижу, когда сделано, это ApplicationError: 2 нечисловой порт: '', потому что это в SDK. Я еще не смог найти причину ошибки нечислового порта.
  • 0
    Привет, Адам, обратите внимание на советы по поводу большинства ошибок, которые вы указали, были вещи, с которыми я уже имел дело, я нашел ошибку, потому что на страницах, которые я когда-то читал, были странные символы, и поэтому URL-адреса были в основном неправильными кормление в функцию. спасибо за отскок идей, я вернулся и смотрел на URL
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню