Max Malysh
Max Malysh

Reputation: 31615

Requests — always call raise_for_status

I'd like to remove the repeated x.raise_for_status() lines:

x = requests.get(url1)
x.raise_for_status()

y = requests.delete(url2)
y.raise_for_status()

z = requests.post(url3, data={'foo': 'bar'})
z.raise_for_status()

How can I call raise_for_status() automatically?

Upvotes: 32

Views: 7523

Answers (1)

Max Malysh
Max Malysh

Reputation: 31615

Create a session with a hook:

session = requests.Session()
session.hooks = {
    'response': lambda r, *args, **kwargs: r.raise_for_status()
}

x = session.get(url1)
y = session.delete(url2)
z = session.post(url3, data={'foo': 'bar'})

Upvotes: 65

Related Questions