aiothrottle
Throttling, flow controlling StreamReader for aiohttp
.. image:: https://img.shields.io/pypi/v/aiothrottle.svg
:target: https://pypi.python.org/pypi/aiothrottle
:alt: Package Version
.. image:: https://travis-ci.org/panda73111/aiothrottle.svg?branch=master
:target: https://travis-ci.org/panda73111/aiothrottle
:alt: Build Status
.. image:: https://coveralls.io/repos/panda73111/aiothrottle/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/panda73111/aiothrottle?branch=master
:alt: Coverage Status
.. image:: https://readthedocs.org/projects/aiothrottle/badge/?version=latest
:target: https://readthedocs.org/projects/aiothrottle/?badge=latest
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/pyversions/aiothrottle.svg
:target: https://www.python.org/
:alt: Python Version
.. image:: https://img.shields.io/pypi/l/aiothrottle.svg
:target: http://opensource.org/licenses/GPL-3.0
:alt: GPLv3
Requirements
License
aiothrottle
is offered under the GPL v3 license.
Documentation
https://aiothrottle.readthedocs.org/
Source code
The latest developer version is available in a github repository:
https://github.com/panda73111/aiothrottle
Usage
.. code:: python
import asyncio
import aiohttp
import aiothrottle
@asyncio.coroutine
def load_file(url):
response = yield from aiohttp.request("GET", url)
data = yield from response.read()
with open("largefile.zip", "wb") as file:
file.write(data)
response.close()
# setup the rate limit to 200 KB/s
aiothrottle.limit_rate(200 * 1024)
# download a large file without blocking bandwidth
loop = asyncio.get_event_loop()
loop.run_until_complete(load_file(
"http://example.com/largefile.zip"))
# unset the rate limit
aiothrottle.unlimit_rate()
TODO
- Upload rate limiting class
- General socket limiting class
CHANGES
0.1.3 (30-08-2016)
-
Set minimum required Python version to 3.4.2, the same as aiohttp 1.0.0
-
Made aiothrottle compatible with current aiohttp version again
(Now using aiohttp.StreamReader._buffer_size)
-
Catching RuntimeError when trying to pause a closing _SSLProtocolTransport
0.1.2 (08-08-2015)
-
Fixed resuming transport too often
-
Added 'rate_limit' and 'throttling' properties
-
Fixed buffer limit control
0.1.1 (08-02-2015)
-
Added limit_rate() and unlimit_rate() globally and response-wise
-
Raising ValueError on invalid rate limit
-
Cancelling _check_handle in Throttle's destructor
0.1.0 (08-01-2015)
- Initial release with basic throttling functionality