aboutsummaryrefslogtreecommitdiff
path: root/requests/sessions.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/sessions.py')
-rw-r--r--requests/sessions.py32
1 files changed, 22 insertions, 10 deletions
diff --git a/requests/sessions.py b/requests/sessions.py
index d9683b0..87320d6 100644
--- a/requests/sessions.py
+++ b/requests/sessions.py
@@ -40,7 +40,7 @@ def merge_kwargs(local_kwarg, default_kwarg):
kwargs.update(local_kwarg)
# Remove keys that are set to None.
- for (k,v) in list(local_kwarg.items()):
+ for (k, v) in list(local_kwarg.items()):
if v is None:
del kwargs[k]
@@ -52,7 +52,7 @@ class Session(object):
__attrs__ = [
'headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks',
- 'params', 'config']
+ 'params', 'config', 'verify']
def __init__(self,
@@ -64,6 +64,7 @@ class Session(object):
hooks=None,
params=None,
config=None,
+ prefetch=False,
verify=True):
self.headers = headers or {}
@@ -74,15 +75,13 @@ class Session(object):
self.hooks = hooks or {}
self.params = params or {}
self.config = config or {}
+ self.prefetch = prefetch
self.verify = verify
for (k, v) in list(defaults.items()):
self.config.setdefault(k, v)
- self.poolmanager = PoolManager(
- num_pools=self.config.get('pool_connections'),
- maxsize=self.config.get('pool_maxsize')
- )
+ self.init_poolmanager()
# Set up a CookieJar to be used by default
self.cookies = {}
@@ -91,6 +90,12 @@ class Session(object):
if cookies is not None:
self.cookies.update(cookies)
+ def init_poolmanager(self):
+ self.poolmanager = PoolManager(
+ num_pools=self.config.get('pool_connections'),
+ maxsize=self.config.get('pool_maxsize')
+ )
+
def __repr__(self):
return '<requests-client at 0x%x>' % (id(self))
@@ -145,9 +150,7 @@ class Session(object):
headers = {} if headers is None else headers
params = {} if params is None else params
hooks = {} if hooks is None else hooks
-
- if verify is None:
- verify = self.verify
+ prefetch = self.prefetch or prefetch
# use session's hooks as defaults
for key, cb in list(self.hooks.items()):
@@ -235,7 +238,7 @@ class Session(object):
:param **kwargs: Optional arguments that ``request`` takes.
"""
- kwargs.setdefault('allow_redirects', True)
+ kwargs.setdefault('allow_redirects', False)
return self.request('head', url, **kwargs)
@@ -281,6 +284,15 @@ class Session(object):
return self.request('delete', url, **kwargs)
+ def __getstate__(self):
+ return dict((attr, getattr(self, attr, None)) for attr in self.__attrs__)
+
+ def __setstate__(self, state):
+ for attr, value in state.items():
+ setattr(self, attr, value)
+
+ self.init_poolmanager()
+
def session(**kwargs):
"""Returns a :class:`Session` for context-management."""