我想知道哪种方法是管理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'] = []
有没有更正确的方法?应该实施某种特殊的词典吗?创建列表?是否使用专有的扭曲方法?你知道吗
我一直在寻找有关互联网的信息,但没有找到任何确凿的信息。你知道吗
谢谢你!你知道吗
不,Twisted中没有特殊类型的列表或字典可供您使用。你知道吗
Twisted的工作是将网络事件转化为对对象的方法调用。一旦在这些对象上实现了这些方法,就要尽可能多地使用常规的Python数据结构。Twisted中有一些特定的东西,比如
Deferreds
,它们是可以用来实现某些异步数据流模式的数据结构,但是对于一些简单的东西,比如在一个列表中有多个实体的基本观察者模式、常规列表和字典等就可以了。你知道吗相关问题 更多 >
编程相关推荐