aboutsummaryrefslogtreecommitdiff
path: root/requests/async.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/async.py')
-rw-r--r--requests/async.py106
1 files changed, 0 insertions, 106 deletions
diff --git a/requests/async.py b/requests/async.py
deleted file mode 100644
index f12cf26..0000000
--- a/requests/async.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-requests.async
-~~~~~~~~~~~~~~
-
-This module contains an asynchronous replica of ``requests.api``, powered
-by gevent. All API methods return a ``Request`` instance (as opposed to
-``Response``). A list of requests can be sent with ``map()``.
-"""
-
-try:
- import gevent
- from gevent import monkey as curious_george
- from gevent.pool import Pool
-except ImportError:
- raise RuntimeError('Gevent is required for requests.async.')
-
-# Monkey-patch.
-curious_george.patch_all(thread=False, select=False)
-
-from . import api
-
-
-__all__ = (
- 'map', 'imap',
- 'get', 'options', 'head', 'post', 'put', 'patch', 'delete', 'request'
-)
-
-
-def patched(f):
- """Patches a given API function to not send."""
-
- def wrapped(*args, **kwargs):
-
- kwargs['return_response'] = False
- kwargs['prefetch'] = True
-
- config = kwargs.get('config', {})
- config.update(safe_mode=True)
-
- kwargs['config'] = config
-
- return f(*args, **kwargs)
-
- return wrapped
-
-
-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, prefetch=prefetch)
-
- return gevent.spawn(r.send, prefetch=prefetch)
-
-
-# Patched requests.api functions.
-get = patched(api.get)
-options = patched(api.options)
-head = patched(api.head)
-post = patched(api.post)
-put = patched(api.put)
-patch = patched(api.patch)
-delete = patched(api.delete)
-request = patched(api.request)
-
-
-def map(requests, prefetch=True, size=None):
- """Concurrently converts a list of Requests to Responses.
-
- :param requests: a collection of Request objects.
- :param prefetch: If False, the content will not be downloaded immediately.
- :param size: Specifies the number of requests to make at a time. If None, no throttling occurs.
- """
-
- requests = list(requests)
-
- pool = Pool(size) if size else None
- jobs = [send(r, pool, prefetch=prefetch) for r in requests]
- gevent.joinall(jobs)
-
- return [r.response for r in requests]
-
-
-def imap(requests, prefetch=True, size=2):
- """Concurrently converts a generator object of Requests to
- a generator of Responses.
-
- :param requests: a generator of Request objects.
- :param prefetch: If False, the content will not be downloaded immediately.
- :param size: Specifies the number of requests to make at a time. default is 2
- """
-
- pool = Pool(size)
-
- def send(r):
- r.send(prefetch)
- return r.response
-
- for r in pool.imap_unordered(send, requests):
- yield r
-
- pool.join() \ No newline at end of file