From: Ben Date: Tue, 17 Jan 2012 21:17:38 +0000 (-0600) Subject: The async.send method wasn't really doing anything useful. It was just calling the... X-Git-Tag: v0.9.2~4^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c658b363e38c928a2f7be8e09eece8e11f863b62;p=services%2Fpython-requests.git The async.send method wasn't really doing anything useful. It was just calling the r.send() method of the Request object 'r'. It took an optional kwarg pools, and assigned it to r._pools which isn't used by anything. This situation was eaither broken or not fully implemented yet. I modified async.map to call r.send rather than send(r) and then modified async.send to actually make use of the pool that it is passed. --- diff --git a/requests/async.py b/requests/async.py index 6f8de38..36f6c5a 100644 --- a/requests/async.py +++ b/requests/async.py @@ -46,15 +46,16 @@ def patched(f): return wrapped -def send(r, pools=None): - """Sends a given Request object.""" +def send(r, pool=None): + """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 pools: - r._pools = pools + if pool != None: + print pool.full() + return pool.spawn(r.send) - r.send() - - return r.response + return gevent.spawn(r.send) # Patched requests.api functions. @@ -80,17 +81,13 @@ def map(requests, prefetch=True, size=None): if size: pool = Pool(size) - pool.map(send, requests) - pool.join() + jobs = [pool.spawn(r.send) for r in requests] else: - jobs = [gevent.spawn(send, r) for r in requests] - gevent.joinall(jobs) + jobs = [gevent.spawn(r.send) for r in requests] + + gevent.joinall(jobs) if prefetch: [r.response.content for r in requests] - return [r.response for r in requests] - - - - + return [r.response for r in requests] \ No newline at end of file