【问题标题】:How to "merge" two Python twisted applications?如何“合并”两个 Python 扭曲的应用程序?
【发布时间】:2013-12-05 15:28:29
【问题描述】:

我有两个应用程序,用twisted 框架编写,例如一个使用twisted.web,另一个使用twisted.protocols.*,而不是web。如何将它们“合并”为一个,有效地为两个应用共享一个反应器?

这些任务的最佳做法是什么?实际上我需要连接 SIPSimpleApp 和 TornadoWeb。他们都可以使用双绞线。

【问题讨论】:

    标签: python asynchronous twisted tornado reactor


    【解决方案1】:

    在扭曲的应用程序中,您可以安装多个协议工厂客户端实例

    Twisted 将处理所有应用程序的连接。

    因此您可以根据需要实例化为服务器/客户端,而且,您是对的,reactor.run() 必须只启动一次。

    因此您可以导入您的协议并运行反应器循环。 基于最简单的回显示例的示例:

    from twisted.internet import protocol, reactor
    
    class Echo(protocol.Protocol):
        def dataReceived(self, data):
            self.transport.write(data)
    
    class EchoFactory(protocol.Factory):
        def buildProtocol(self, addr):
            return Echo()
    
    class Echo2(protocol.Protocol):
        def dataReceived(self, data):
            self.transport.write(data+" From 2")
    
    class EchoFactory2(protocol.Factory):
        def buildProtocol(self, addr):
            return Echo2()
    
    reactor.listenTCP(1234, EchoFactory())
    
    reactor.listenTCP(1235, EchoFactory2())
    reactor.run()
    

    这是工作

    也可以使用twistd系统,以及服务合集,文档here

    【讨论】:

      【解决方案2】:

      到目前为止,我发现,如果合并两个扭曲的应用程序,则应该从其中一个中删除 reactor.run(),最后只留下一个 reactor.run()。并确保两个应用程序的 twisted.reactor 实现相同。 欢迎更多cmets。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多