Я получаю 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
Пара вещей с кодом, который может быть проблемой. Один из них заключается в том, что вы ничего не делаете с входящим значением страницы, но оно переписывается с помощью функции 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 и визуально проверять те, которые не работают.