Python, Daemons and D-Bus

Diez B. Roggisch deets at nospam.web.de
Sun May 25 07:40:47 EDT 2008


PurpleServerMonkey schrieb:
> On May 25, 5:46 am, Sebastian 'lunar' Wiesner <basti.wies... at gmx.net>
> wrote:
>> [ PurpleServerMonkey <PurpleServerMon... at gmail.com> ]
>>
>>> Would you use D-Bus or a more traditional IPC method such as sockets?
>>> Although D-Bus is relatively new it looks interesting, just not sure
>>> it would work well in this kind of project.
>> DBus is not really intended for private communication between processes of
>> the same application, but more for intercommunication between different
>> applications.  If the IPC interface of your backend daemons is intended to
>> be used by other applications, DBus is the right choice, otherwise I would
>> choose something different.
>>
>> The reason is, that DBus doesn't know about applications.  It exposes all
>> objects registered on the bus to every DBus client on the system and so
>> makes you application-private API available to the public (and spams the
>> bus with lots of generally useless objects ;) ).
>>
>> In case your IPC interface is application private, a custom IPC protocol
>> (probably using XML RPC over unix sockets) is better suited.
>>
>> Moreover you should make your choice dependent on the type of data you
>> transmit.  Both DBus and XML-RPC wrap calls into XML messages, which is
>> terribly inefficient for large binary data.
>>
>> --
>> Freedom is always the freedom of dissenters.
>>                                       (Rosa Luxemburg)
> 
> Thanks Sebastian,
> 
> Your comments make a lot of sense. I was thinking of creating a custom
> session channel and using that for my purposes but as you mentioned
> it's not very secure and I do want to keep the server to daemon
> traffic private, the server has an XML-RPC interface with a public
> API.
> 
> Will definitely look at using a different IPC mechanism for this part
> of the project.

If you can - use Pyro. It is easy, fast and can be made secure using SSL 
AFAIK.

Diez



More information about the Python-list mailing list