Synchronous evented IO with pyuv and fibers
Project description
Gruvi is a network library for Python. It combines the efficiencies of evented I/O with a sequential programming model. Gruvi uses libuv (via pyuv) as the underlying high-performance evented I/O layer, and coroutines based on fibers to create a traditional sequential programming model on top of the evented I/O callback API.
Gruvi features include:
A PEP3153 Transport/Protocol based API, like Twisted, and asyncio.
A sequential programming model using regular Python function calls on top of the platform specific evented I/O core. You don’t need to use callbacks or yield from to call a potentially blocking operation. When a operation would block the current fiber is automatically suspended, and it is resumed when the operation completes.
A high-performance SSL transport implementation.
A high-performance HTTP protocol client and server protocol implementation, based on the node.js http-parser.
High performance protocol implementations for D-BUS (client) and JSON-RPC (client and server).
Thread-safe synchronization primitives including locks, signals and queues.
Uses node.js libuv as the I/O core, via pyuv. This means that gruvi uses the I/O model that is most efficient on each platform. On Posix and Mac OSX it uses non-blocking I/O via a reactor, while on Windows it uses asynchronous (“overlapped”) I/O via I/O completion ports.
Excellent platform support (thanks to libuv). Posix, Mac OSX and Windows are all first-class citizens.
Support for executing asynchronous functions in a thread or fiber pool using a concurrent.futures API.
A managed threadpool to integrate with third-party libraries that use blocking I/O.
Gruvi is similar in concept to gevent, concurrence, eventlet and asyncio, but has its own unique design. To read more about the differences see the Rationale section in the documentation.
CI Status
Requirements
You need Python 2.6, 2.7 or 3.3+.
The following operating systems are currently tested:
Posix (Only Linux is currently tested)
Mac OSX
Windows
Installation
Download the source from Github:
$ git clone https://github.com/geertj/gruvi $ pip install -r requirements.txt $ python setup.py build $ python setup.py install
To run the test suite:
$ pip install -r dev-requirements.txt $ nosetests
Documentation
The documentation is available on readthedocs.
License
Gruvi is free software, available under the MIT license.
Contact
Feel free to contact the author at geertj@gmail.com. You can also submit tickets or suggestions for improvements on Github.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.