我正在使用 Twisted PB 编写一些备份软件来获取与服务器之间的信息,并且一切运行良好。
我想做的是跟踪哪些客户端连接到服务器。我已经设法在客户端连接时记录了连接的 IP 地址。最初,客户端可以访问只有一个方法的 pb.Root 对象,该方法返回另一个对象,该对象可以访问存储的数据。
我想做的是更新已连接客户端的连接详细信息,以包括在发送到服务器的调用中发送的一些信息。
这是我的客户端日志记录代码
class RKRServerFactory(pb.PBServerFactory):
clientsConnected = {}
def buildProtocol(self, addr):
"""
Return a Broker attached to the factory (as the service provider).
"""
self.clientsConnected[addr.host] = None
print self.clientsConnected
proto = self.protocol(isClient=False, security=self.security)
proto.factory = self
proto.setNameForLocal("root", self.root.rootObject(proto))
return proto
这是初始连接方法的代码
def __init__(self):
self.hostid = None
self.storage = None
self.databasepath = None
def remote_connect(self, hostid):
self.hostid = hostid
self.databasepath = os.path.join(os.path.join("/media/098974ed-f717-4dd4-8306-7c4863e87e67/rkr_server_storage", hostid))
try:
self.__initDatabase(self.databasepath)
except IOError, e:
return defer.fail(e)
self.storage = RKRStorage(self)
return defer.succeed(self.storage)
我不确定如何让客户端断开连接也被记录。如果有人可以提供帮助,我将不胜感激