【问题标题】:Twisted generating new clients for reactorTwisted 为 reactor 生成新客户端
【发布时间】:2021-12-13 11:52:54
【问题描述】:

通常在 Twisted (Python) 中,您定义一些侦听器或连接或循环操作并将它们添加到反应器中,然后调用 reactor.run()。有没有办法从其他事件循环中添加新连接?假设我想要一个服务器,然后这个服务器生成其他客户端,每个客户端都有自己的数据接收范围。

谢谢

【问题讨论】:

    标签: python client twisted


    【解决方案1】:

    您可以根据需要创建与特定服务器的任意数量的客户端连接。无论代码质量/设计模式如何,都可以在代码中的任何位置建立客户端连接。

    from twisted.internet import protocol, reactor
    
    class SomeProtocol(protocol.Protocol):
        def dataReceived(self):
            # This is what I believe you're asking about
            for x in range(5):
                reactor.connectTCP('localhost', 8000, SomeClientFactory())
    
    class SomeServerFactory(protocol.Factory):
        def buildProtocol(self):
            return SomeProtocol()
    
    reactor.listenTCP(8000, SomeServerFactory())
    reactor.run()
    

    【讨论】:

    • 完美,多客户端连接是一个糟糕的设计是否有设计原因?连接将连接到不同的服务器,而不是同一个,还有什么更好的方法来做到这一点?
    • 创建多个客户端并使用twisted发出多个异步请求绝对没有错(这是包的主要用例之一)。
    猜你喜欢
    • 2015-11-29
    • 2011-03-19
    • 1970-01-01
    • 2014-10-14
    • 2011-12-27
    • 2015-01-26
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多