Одеяло except:
в основном всегда ошибка.Вы возвращаете None
вместо обработки какого-либо аномального или ошибочного ответа от сервера, и, конечно, остальная часть вашего кода не может быть восстановлена.
В качестве первого шага отладки просто извлеките try
/ except
обработка.Может быть, тогда вы сможете найти способ вернуть более подробный обработчик ошибок для некоторых случаев, из которых вы знаете, как восстанавливаться.
def getipInfo(ipaddress):
url = '%s%s/json' % (baseurl, ipaddress)
urlresult = urllib.request.urlopen(url)
jsonresult = urlresult.read() # get the JSON
parsedjson = json.loads(jsonresult) # put parsed JSON into dictionary
return parsedjson
Возможно, вызывающий код в checkIP
должен иметь try
/ except
вместо этого и, например, повторите попытку после сна на некоторое время, если сервер показывает, что вы едете слишком быстро.
(При отсутствии токена авторизации похоже, что вы используете бесплатную версиюэтот сервис, который, вероятно, в любом случае не гарантирован. Также, возможно, посмотрите на использование их рекомендуемой библиотеки - я не смотрел на нее более подробно, но я бы предположил, что он, по крайней мере, лучше знает, как вести себя вслучай ошибки на стороне сервера. Это почти наверняка также более Pythonic, по крайней мере в том смысле, что вы не должны заново изобретать вещи, которые уже существуют.)