Merge branch '239-socket-leak' of https://github.com/acdha/requests into develop

This commit is contained in:
Kenneth Reitz
2012-01-29 19:06:41 -05:00
2 changed files with 10 additions and 15 deletions
+5 -8
View File
@@ -46,15 +46,15 @@ def patched(f):
return wrapped
def send(r, pool=None):
"""Sends the request object using the specified pool. If a pool isn't
def send(r, pool=None, prefetch=False):
"""Sends the request object using the specified pool. If a pool isn't
specified this method blocks. Pools are useful because you can specify size
and can hence limit concurrency."""
if pool != None:
return pool.spawn(r.send)
return pool.spawn(r.send, prefetch=prefetch)
return gevent.spawn(r.send)
return gevent.spawn(r.send, prefetch=prefetch)
# Patched requests.api functions.
@@ -79,10 +79,7 @@ def map(requests, prefetch=True, size=None):
requests = list(requests)
pool = Pool(size) if size else None
jobs = [send(r, pool) for r in requests]
jobs = [send(r, pool, prefetch=prefetch) for r in requests]
gevent.joinall(jobs)
if prefetch:
[r.response.content for r in requests]
return [r.response for r in requests]
+5 -7
View File
@@ -203,15 +203,14 @@ class Request(object):
history = []
r = build(resp)
cookies = self.cookies
self.cookies.update(r.cookies)
if r.status_code in REDIRECT_STATI and not self.redirect:
while (('location' in r.headers) and
((r.status_code is codes.see_other) or (self.allow_redirects))):
while (
('location' in r.headers) and
((r.status_code is codes.see_other) or (self.allow_redirects))
):
r.content # Consume socket so it can be released
if not len(history) < self.config.get('max_redirects'):
raise TooManyRedirects()
@@ -253,7 +252,7 @@ class Request(object):
method=method,
params=self.session.params,
auth=self.auth,
cookies=cookies,
cookies=self.cookies,
redirect=True,
config=self.config,
timeout=self.timeout,
@@ -264,7 +263,6 @@ class Request(object):
)
request.send()
cookies.update(request.response.cookies)
r = request.response
self.cookies.update(r.cookies)