We can alter the portions of the request process signal event handling using hooks. For example, there is hook named response
which contains the response generated from a request. It is a dictionary which can be passed as a parameter to the request. The syntax is as follows:
hooks = {hook_name: callback_function, … }
The callback_function
parameter may or may not return a value. When it returns a value, it is assumed that it is to replace the data that was passed in. If the callback function doesn't return any value, there won't be any effect on the data.
Here is an example of a callback function:
>>> def print_attributes(request, *args, **kwargs): ... print(request.url) ... print(request .status_code) ... print(request .headers)
If there is an error in the execution of callback_function
, you'll receive a warning message in the standard output.
Now let us print some of the attributes of the request, using the preceding callback_function
:
>>> requests.get('https://www.python.org/', hooks=dict(response=print_attributes)) https://www.python.org/ 200 CaseInsensitiveDict({'content-type': 'text/html; ...}) <Response [200]>
3.137.163.62