Gruvi is a network library for Python. It combines the efficiencies of event-based I/O with a sequential programming model. Gruvi uses libuv (via pyuv) as the underlying high-performance event-based 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 comes with batteries included. It has out of the box support for SSL, HTTP (both client and server), JSON-RPC and D-BUS.
Gruvi values:
- Performance. Gruvi's main dependencies, libuv and fibers, have a very strong focus on performance and so does Gruvi itself. Gruvi also contains a very fast HTTP implementation based on the Joyent/Node.js event driven http-parser.
- Scalability. Thanks to libuv and the low memory usage of fibers, Gruvi can support hundreds of thousands of concurrent connections.
- Platform support. All supported platforms (Posix, Mac OSX and Windows) are first-class citizens. This is mostly thanks to libuv.
- Minimalistic design. All of Gruvi is less than 4,000 lines of Python.
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
Source are available from Github.
The documentation is available on readthedocs.
Gruvi is free software, available under the MIT license.
Feel free to contact the author at geertj@gmail.com. You can also submit tickets or suggenstions for improvements on Github.