我写了一个脚本,连接到远程计算机上的d-bus会话总线,如下所示:
os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.1,port=1234"
bus = dbus.SessionBus()
除了现在我需要能够连接到不同计算机上的多个会话总线之外,它工作正常。我尝试了以下内容:
os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.1,port=1234"
bus1 = dbus.SessionBus()
os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.2,port=1234"
bus2 = dbus.SessionBus()
但它不起作用。对SessionBus的第二次调用返回与第一次调用相同的对象。即。在这种情况下,两个对象都引用192.168.0.1上的会话总线。 似乎只有第一次调用SessionBus实际上做了什么,所有后续调用只返回在第一次调用时创建的对象。有没有人知道解决这个问题?
答案 0 :(得分:2)
bus1 = dbus.bus.BusConnection("tcp:host=192.168.0.1,port=1234")
bus2 = dbus.bus.BusConnection("tcp:host=192.168.0.2,port=1234")
答案 1 :(得分:0)
在Python / DBUS源代码中,我注意到在_dbus.py
中,SessionBus.__new__
采用private
布尔参数:
`private` : bool
If true, never return an existing shared instance, but instead
return a private connection.
bus = dbus.SessionBus(private=True)
会有所作为吗?