Twisted应用程序中的协议列表

2024-10-02 12:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道哪种方法是管理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'] = []

有没有更正确的方法?应该实施某种特殊的词典吗?创建列表?是否使用专有的扭曲方法?你知道吗

我一直在寻找有关互联网的信息,但没有找到任何确凿的信息。你知道吗

谢谢你!你知道吗


Tags: 方法用户inself列表if字典远程
1条回答
网友
1楼 · 发布于 2024-10-02 12:28:27

不,Twisted中没有特殊类型的列表或字典可供您使用。你知道吗

Twisted的工作是将网络事件转化为对对象的方法调用。一旦在这些对象上实现了这些方法,就要尽可能多地使用常规的Python数据结构。Twisted中有一些特定的东西,比如Deferreds,它们是可以用来实现某些异步数据流模式的数据结构,但是对于一些简单的东西,比如在一个列表中有多个实体的基本观察者模式、常规列表和字典等就可以了。你知道吗

相关问题 更多 >

    热门问题