在其处理程序上检查接收到的 D-Bus 信号
Inspect a received D-Bus signal on its handler
我正在构建一个通用的 DBus 代理接收器,用户可以利用它来配置通用信号侦听器并将它们代理到另一个服务。
因此,我需要能够收听所有 总线信号:
from dbus import SessionBus
def handler(*args, **kwargs):
print(args, kwargs)
# ...
bus = SessionBus()
bus.add_signal_receiver(handler, signal_name=None, dbus_interface=None, path=None)
这种方法的问题是我无法从处理程序的 args
和 kwargs
判断哪个 interface/signal name/path 与信号相关联:
args=(dbus.String(':1.22395'), dbus.String(''), dbus.String(':1.22395')) kwargs={}
有没有一种简单的方法来检查 DBus 以获得有关接收信号的更多信息?我想它应该存在(dbus-monitor --monitor
做的事情与我想做的差不多),但我在网上找不到任何参考资料。
查看sender_keyword
、destination_keyword
等关键字参数add_signal_receiver()
。
您可能要考虑使用 pydbus, or some other more modern D-Bus binding. dbus-python is old and not very Pythonic. It’s not very actively maintained,并且肯定不会积极开发。
我正在构建一个通用的 DBus 代理接收器,用户可以利用它来配置通用信号侦听器并将它们代理到另一个服务。
因此,我需要能够收听所有 总线信号:
from dbus import SessionBus
def handler(*args, **kwargs):
print(args, kwargs)
# ...
bus = SessionBus()
bus.add_signal_receiver(handler, signal_name=None, dbus_interface=None, path=None)
这种方法的问题是我无法从处理程序的 args
和 kwargs
判断哪个 interface/signal name/path 与信号相关联:
args=(dbus.String(':1.22395'), dbus.String(''), dbus.String(':1.22395')) kwargs={}
有没有一种简单的方法来检查 DBus 以获得有关接收信号的更多信息?我想它应该存在(dbus-monitor --monitor
做的事情与我想做的差不多),但我在网上找不到任何参考资料。
查看sender_keyword
、destination_keyword
等关键字参数add_signal_receiver()
。
您可能要考虑使用 pydbus, or some other more modern D-Bus binding. dbus-python is old and not very Pythonic. It’s not very actively maintained,并且肯定不会积极开发。