Получите менее подробные обратные трассировки по запросамPython

Программы на Python
Ответить
Anonymous
 Получите менее подробные обратные трассировки по запросам

Сообщение Anonymous »

У меня есть этот код:

Код: Выделить всё

import requests
url = 'some url see below'

try:
response = requests.request('GET', url, verify=False, timeout=5)
print('Response ok.')
except Exception as err:
errtxt = 'Connection failed: ' + str(err)
print(errtxt)
  • Случай № 1: URL-адрес с тайм-аутом: url = 'https://10.254.254.254:12345'

    Ошибка подключения: HTTPSConnectionPool(host='10.254.254.254', port=12345): превышено максимальное количество попыток с URL-адресом: / (Вызвано ConnectTimeoutError(, «Тайм-аут соединения с 10.254.254.254 истек. (connect timeout=5)»))
  • Случай № 2: URL-адрес с подключением отклонен: url = 'https://localhost:65535'

    Ошибка подключения: HTTPSConnectionPool(host='localhost', port=65535): превышено максимальное количество попыток с URL-адресом: / (Вызвано NewConnectionError(': Не удалось установить новое соединение: [Errno 111] Соединение отклонено'))
  • Случай №3: URL-адрес с несуществующим доменом: url = 'https://inexthost.inexdomain'

    Не удалось установить соединение: HTTPSConnectionPool(host='inexthost.inexdomain', port=443): превышено максимальное количество попыток с URL-адресом: / (вызвано NewConnectionError(': не удалось установить новое соединение: [Errno -2] Имя или служба неизвестны'))
Мне нужен менее описательный текст, мне нужна только последняя часть исключения:

Код: Выделить всё

* Connection to 10.254.254.254 timed out. (connect timeout=5)
* Failed to establish a new connection: [Errno 111] Connection refused
* Failed to establish a new connection: [Errno -2] Name or service not known
У меня есть этот фрагмент кода:

Код: Выделить всё

import re, requests
url = 'some url'

try:
response = requests.request('GET', url, verify=False, timeout=5)
print('Response ok.')
except Exception as err:
try:
errtxt = re.split(' object at 0x\\S+>: | object at 0x\\S+>, ', str(err))[1].replace('))', '').replace('\'', '')
except IndexError:
errtxt = str(err)
errtxt = 'Connection failed: ' + errtxt
print(errtxt)
Есть ли более питонический способ решить эту проблему?
Это похоже на обработку исключений запросов Python: как получить более подробное (удобное для пользователя) сообщение об ошибке? но для Python 3 (в моем случае 3.8.6).

Подробнее здесь: https://stackoverflow.com/questions/798 ... m-requests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»