Skip to main content

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

https://secure.travis-ci.org/geertj/gruvi.png

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.

Files for gruvi, version 0.9.1
Filename, size File type Python version Upload date Hashes
Filename, size gruvi-0.9.1.tar.gz (111.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page