サーバーとの間で情報を取得するために Twisted PB を使用していくつかのバックアップ ソフトウェアを作成していますが、すべて非常にうまく機能しています。
私ができるようにしたいのは、どのクライアントがサーバーに接続されているかを追跡することです。クライアントの接続時にログに記録された接続の IP アドレスを取得できました。最初に、クライアントは 1 つのメソッドだけを持つ 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)
クライアントの切断もログに記録する方法がわかりません。誰かが助けてくれれば、本当に感謝します