2014-10-23 3 views
0

Иногда я вижу следующее исключение, когда пытаюсь попасть на мою домашнюю страницу.Что это за исключение python означает

ERROR:root:HTTPConnectionPool(host='0.0.0.0', port=8003): Max retries exceeded with url: 
/snapshot/?app=cdnstats&key=28736ba5fbe151d5ff6678015c8f6ade (Caused by <class 'socket.error'>: 
[Errno 61] Connection refused) 
Traceback (most recent call last): 
File "/Users/rokumar/CDNStats/cdnstats/app/core/views.py", line 257, in get_snapshot_data 
data = templates.render_snapshot(controllers.get_snapshot_data()) 
File "/Users/rokumar/CDNStats/cdnstats/util.py", line 260, in decorated 
expiry, mem_args, func, args, kwargs) 
File "/Users/rokumar/CDNStats/cdnstats/util.py", line 227, in get_data_from_meminstance 
data = func(*args, **kwargs) 
File "/Users/rokumar/CDNStats/cdnstats/app/core/controllers.py", line 255, in get_snapshot_data 
return util.call_get_api(config.CDNSTATS_API_URL + 'snapshot/?', data) 
File "/Users/rokumar/CDNStats/cdnstats/util.py", line 123, in call_get_api 
raise ex 

Ниже приведен фрагмент кода, генерирующий исключение.

def call_get_api(url, data): 
try: 
    data = data.copy() 
    data['key'] = request.args.get('key') 
    data['app'] = config.APPNAME 

    query = soft_urlencode(data) 
    response = requests.get(url + query) 
    if response.status_code == 200: 
     return response.json() 
    else: 
     apiexception = APIException(response.content) 
     apiexception.status_code = response.status_code 
     raise apiexception 
except UnicodeEncodeError as ex: 
    print ex 
    raise ex 

except Exception as ex: 
    raise ex 

Я вижу исключение с перерывами, и мое приложение сильно замедляется. Я действительно не понимаю исключение или что не так. Исключение означает, что превышены максимальные повторы, но у меня нет логики повторения.

+2

С той части ошибки, что «[Errno 61] Connection отказался», я предполагаю, что что-то неоднократно пытается и не может выполнить сетевой запрос. Трудно сказать что-либо еще, так как ваш код 'except Exception as ex: raise ex', кажется, скрывает остальную трассировку стека. Попробуйте удалить эти последние две строки, и вы можете получить более описательный след. – Kevin

ответ

0

в urlopen, попробуйте установить retries=False или retries=1. Значение по умолчанию равно 3, так что, вероятно, ваша логика повторения будет продолжена.

+0

Это никоим образом не помогает мне. Retry = 3, даже если это должно повредить приложение, – station