将DBUS服务方法连接到另一个方法

时间:2015-01-28 09:20:39

标签: python dbus

我有4个DBUS服务python脚本(a.py,b.py,c.py,d.py)并在' main.py'

中运行它

我想合并dbus服务的原因是因为每个进程运行的内存占%。每dbus服务2.0%内存。我将创建15个dbus服务。

main.py

#!/usr/bin/env python
import sys
import gobject
from dbus.mainloop.glib import DBusGMainLoop

listofdbusfilenames = ['a','b','b','d']

def importDbusServices():
    for dbusfilename in listofdbusfilenames:
        globals()[dbusfilename] = __import__(dbusfilename) 

def callservices():
    for dbusfilename in listofdbusfilenames:
        globals()[dbusfilename +'_var'] =  eval(dbusfilename +'.ServiceClass()')

if __name__ == '__main__':
    importDbusDervices()
    DBusGMainLoop(set_as_default = True)
    callservices()
    loop = gobject.MainLoop()
    loop.run()

a.py希望从b.py获取返回方法

b.py将获得c.py和d.py的返回方法

-a.py

- | b.py

---- | c.py

---- | d.py

问题:

  1. 我无法获得退货方式'' get_dbus_method'',内省错误
  2. 我尝试过信号和接收器,但这需要的时间比“get_dbus_method'”
  3. 更长。

    我的dbus服务格式

    import dbus
    import dbus.service
    class ServiceClass(dbus.service.Object):    
        def __init__(self):
    
            busName = dbus.service.BusName('test.a', bus = dbus.SystemBus())
            dbus.service.Object.__init__(self, busName, '/test/a')
        @dbus.service.method('test.a')
        def aMethod1(self):
                #get the b.py method value 'get_dbus_method' here
                return #value from b.py method
    

    还有其他方法直接获取方法吗?

    提前感谢您的回复并阅读此内容。 :d

0 个答案:

没有答案