[Twisted-Python] ANN: Twisted DBus 1.0

Tom Cocagne tom.cocagne at gmail.com
Tue Jul 3 02:08:28 EDT 2012

For anyone interested in taking a look, I've just released a
native-Python implementation of the DBus protocol for Twisted. The
intent of the implementation is to provide Twisted applications with a
full-featured DBus API that is consistent with the rest of the
framework and does not require the use of the glib reactor or libdbus
Python bindings.

The project is currently hosted on github and has a pypi entry:



Notes on the implementation:

* A comprehensive tutorial and DBus protocol overview is included in
the project documentation
* Although the release version is set at 1.0, the project should be
considered Beta quality as it has seen little real-world use
* Unit test coverage is at about 98%
* The code adheres to the Twisted coding standards
* Windows is currently not supported (likely a trivially easy task but
as yet unexplored)
* Full, generated API documentation is possible but burnout/apathy set
in before I figured out how to properly use Twisted's documentation
* The implementation includes a basic DBus server implementation but,
currently, it's only intended to serve as an alternative to the native
DBus server when running the unit tests.

Notes on Performance:

* For a pure-python solution the performance is really quite good.
* On the CPython interpreter, this implementation runs at about about
1/3 to 1/5th the speed of the libdbus bindings.
* On the PyPy interpreter, this implementation runs at about the same
speed as the libdbus bindings
* Surprisingly enough, the bottleneck does not appear to be in the
marshalling/unmarshalling routines. Simply compiling the dbus
marshalling module with Cython yielded a 10x increase in marshalling
performance but this translated into only a minor overall performance
improvement. If anyone adept at Python/Twisted profiling would care to
take a look, assistance in this area would be most welcome.

- Tom Cocagne

More information about the Twisted-Python mailing list