【问题标题】:Multiple, Simultaneous Factories and Protocols in Twisted: Same Service, Different PortsTwisted 中的多个同时的工厂和协议:相同的服务,不同的端口
【发布时间】:2011-02-09 22:36:21
【问题描述】:

您好,论坛。

我正在开发一个使用 Twisted 来管理网络的 Python 程序。该程序的基础是侦听多个端口上的连接的 TCP 服务。但是,我没有使用一个 Twisted 工厂来处理每个端口的协议对象,而是尝试为每个端口使用一个单独的工厂。这样做的原因是强制将连接到不同端口的客户端组分开。

不幸的是,这种架构似乎不太有效:连接到一个端口的客户端似乎在所有工厂中都可用(例如,每个工厂使用的协议类包括一个'self.factory.clients.append (self)' 语句...而不是将给定客户端添加到特定端口的工厂,而是将客户端添加到所有工厂),并且每当我关闭一个端口上的服务时,所有端口上的侦听器也会停止。

我与 Twisted 合作了一段时间,担心我根本不完全了解它的工厂类是如何管理的。

我的问题是:是否根本不可能在不同端口上同时使用同一工厂和同一协议的多个同时实例(没有这些实例相互影响)?

【问题讨论】:

    标签: python twisted factory protocols


    【解决方案1】:

    你绝对可以做你想做的事——如果没有看到你的代码,很难判断你做错了什么,但我敢打赌,你的工厂类中有 clients = [] 而不是

    self.clients = []
    

    在您的工厂类的 __init__ 方法中。

    【讨论】:

    • 哇——我永远不想和你打赌!我不明白这一点真是太荒谬了。一旦我将“客户”列表的初始化移到我工厂的 init 方法中,整个问题就消失了。非常感谢您的快速回复!
    • 更不用说“你可能需要在你的__init__ 中执行此操作”现在这就是课堂 - 没有双关语。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多