diff options
Diffstat (limited to 'requests/hooks.py')
-rw-r--r-- | requests/hooks.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/requests/hooks.py b/requests/hooks.py index f9cf480..3560b89 100644 --- a/requests/hooks.py +++ b/requests/hooks.py @@ -22,7 +22,10 @@ Available hooks: """ -import warnings +import traceback + + +HOOKS = ('args', 'pre_request', 'post_request', 'response') def dispatch_hook(key, hooks, hook_data): @@ -31,10 +34,15 @@ def dispatch_hook(key, hooks, hook_data): hooks = hooks or dict() if key in hooks: - try: - return hooks.get(key).__call__(hook_data) or hook_data + hooks = hooks.get(key) + + if hasattr(hooks, '__call__'): + hooks = [hooks] - except Exception, why: - warnings.warn(str(why)) + for hook in hooks: + try: + hook_data = hook(hook_data) or hook_data + except Exception: + traceback.print_exc() return hook_data |