我想知道哪些是管理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'] = []
有没有更正确的方法来做到这一点?应该实现一些特殊的字典吗?创建一个列表?是否使用扭曲的专有方法?
我一直在寻找关于互联网的信息,我还没有发现任何决定性的。
谢谢!