31

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?

Max Malysh
  • 29,384
  • 19
  • 111
  • 115

1 Answers1

54

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'})
Max Malysh
  • 29,384
  • 19
  • 111
  • 115