我想知道哪些是管理Twisted中活動協議的最佳方式,或者如果沒有具體的方法。Twisted應用中的協議列表
在我目前的應用程序中,我創建了一個字典,其中有兩個字段。在一個我把遠程用戶和本地用戶到另一個。這兩個字段都是列表,所以我可以添加幾個項目。
我使用的方法如下。首先我通過嘗試來檢查 - 除非字典存在。如果沒有字典,我創建它。
try:
if self.factory.active_protocols:
log.msg('Active protocols dictionary already created')
except Exception as e:
log.err(e)
self.factory.active_protocols = {}
self.factory.active_protocols.setdefault('localUsr', [])
self.factory.active_protocols.setdefault('remoteUsr', [])
然後我檢查,如果本地用戶在本地用戶列表。如果沒有用戶,我將它添加到本地用戶列表中。如果列表存在,則會引發錯誤。
if sUsername in self.factory.active_protocols['localUsr']:
log.err('Client already logged in')
raise UnauthorizedLogin('Client already logged in')
else:
# Attach local user to active protocols list.
self.sUsername = sUsername
self.factory.active_protocols['localUsr'].append(self.sUsername)
如果條件合適的遠程用戶也被添加到用下面的代碼的遠程用戶的列表。
# If time is correct, attach remote user to active_protocols
self.factory.active_protocols['remoteUsr'].append(remoteUsr)
當我斷開用戶,我使用下面的代碼刪除列表。
if self.sUsername in self.factory.active_protocols['localUsr']:
self.factory.active_protocols['localUsr'] = []
if self.remoteUsr in self.factory.active_protocols['remoteUsr']:
self.factory.active_protocols['remoteUsr'] = []
有沒有更正確的方法來做到這一點?應該實現一些特殊的字典嗎?創建一個列表?是否使用扭曲的專有方法?
我一直在尋找關於互聯網的信息,我還沒有發現任何決定性的。
謝謝!