Python, Daemons and D-Bus

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • PurpleServerMonkey

    Python, Daemons and D-Bus

    Seeking feedback from group members on a design I'm looking at using
    in a project.

    I've created an XML-RPC server and a number of Daemons, the idea is
    that the XML-RPC server gets a request from a user interface of some
    sort and then sends data to the Daemon processes to do work. Daemons
    will also need to feed back task information to the XML-RPC server.

    For the communications between the Daemons and XML-RPC server I was
    thinking of using D-Bus (The project is for Linux and *BSD) but wanted
    to hear what others thought of the idea?

    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.

    Thanks in advance for your thoughts and opinions.
  • Sebastian 'lunar' Wiesner

    #2
    Re: Python, Daemons and D-Bus

    [ PurpleServerMon key <PurpleServerMo nkey@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 intercommunicat ion 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)

    Comment

    • PurpleServerMonkey

      #3
      Re: Python, Daemons and D-Bus

      On May 25, 5:46 am, Sebastian 'lunar' Wiesner <basti.wies...@ gmx.net>
      wrote:
      [ PurpleServerMon key <PurpleServerMo n...@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 intercommunicat ion 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.

      Comment

      • Diez B. Roggisch

        #4
        Re: Python, Daemons and D-Bus

        PurpleServerMon key schrieb:
        On May 25, 5:46 am, Sebastian 'lunar' Wiesner <basti.wies...@ gmx.net>
        wrote:
        >[ PurpleServerMon key <PurpleServerMo n...@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 intercommunicat ion 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

        Comment

        Working...