2014-01-28 4 views
13

Я использую веб-сервис для извлечения некоторых данных, но иногда URL-адрес не работает и мой сайт не загружается. Вы знаете, как я могу обработать следующее исключение, поэтому нет проблем с сайтом в случае, если веб-служба не работает?Запросы на Python - Тип исключения: ConnectionError - try: except не работает

Django Version: 1.3.1 
Exception Type: ConnectionError 
Exception Value: 
HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url: 

Я использовал

try: 
    r = requests.get("http://test.com", timeout=0.001) 
except requests.exceptions.RequestException as e: # This is the correct syntax 
    print e 
    sys.exit(1) 

, но ничего не происходит

+0

любой умолчанию я не уверен, но не должно быть 'except requests.exceptions.RequestException, e:'? также вы говорите, что у вас есть «ConnectionError» как исключение, но я не вижу, чтобы вы поймали это конкретное исключение ... –

+0

ну, потому что я новичок в python. Я нашел ответ отсюда: http://stackoverflow.com/questions/16511337/correct-way-to-try-except-using-python-request-module – user1431148

ответ

26

Вы не должны выйти ваш работник экземпляра sys.exit(1) Кроме того, вы «повторно поймать неправильную ошибку.

Что вы могли бы сделать для, например, является:

from requests.exceptions import ConnectionError 
try: 
    r = requests.get("http://example.com", timeout=0.001) 
except ConnectionError as e: # This is the correct syntax 
    print e 
    r = "No response" 

В этом случае программа будет продолжаться, устанавливая значение r которое обычно сохраняет ответ на значение

+1

Я просто попробовал, но у меня такой же результат. – user1431148

+0

Извините, что вы не ошиблись в ошибке: вы получаете ConnectionError, поэтому вам нужно поймать это (см. Отредактированный ответ) – ProfHase85

+0

Он работает! Большое спасибо! Но я использовал кроме request.exceptions.ConnectionError как e: – user1431148