在API访问失败期间引发的适当异常

时间:2018-03-29 19:46:16

标签: python web-services

在对透明消耗的一个或多个HTTP API提供抽象的类进行编码时,在HTTP 404或类似的服务请求结束时引发的适当异常是什么?

该类旨在作为消费者的复合对象,这些消费者可以高度概述正在使用的服务,但会理解API访问级别的失败的特定异常。当然,总是可以编写和引发自定义异常对象:

class WebServiceUnresponsive(Exception):
    pass

但是经历Standard Python Exceptions,我不确定我是否会忽视合适的候选人。如果不是这样,最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

使用requests

requests.exceptions包含大量内置HTTP异常,并包含一个特定的response.raise_for_status(),它可以为您完成所有繁重工作(例如来自链接):

>>> bad_r = requests.get('http://httpbin.org/status/404')
>>> bad_r.status_code
404

>>> bad_r.raise_for_status()
Traceback (most recent call last):
  File "requests/models.py", line 832, in raise_for_status
    raise http_error
requests.exceptions.HTTPError: 404 Client Error

如果您没有直接使用请求,可以from requests import exceptions然后自己投票。

if exception_encountered(req):
    raise exceptions.HTTPError("Got a 404 yo... server says there's nothing there :(")