The async.send method wasn't really doing anything useful. It was just calling the...
authorBen <mastahyeti@gmail.com>
Tue, 17 Jan 2012 21:17:38 +0000 (15:17 -0600)
committerBen <mastahyeti@gmail.com>
Tue, 17 Jan 2012 21:17:38 +0000 (15:17 -0600)
requests/async.py

index 6f8de3800de944af5a1aa9f51670225e3ab224f3..36f6c5a92178984630b442b7422bc8cf0d67f188 100644 (file)
@@ -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