twisted [非阻塞异步服务器框架]

    # 较老 推荐使用 协程框架 或 微线程框架
    # 用来进行网络服务和应用程序的编程。虽然 Twisted Matrix 中有大量松散耦合的模块化组件,但该框架的中心概念还是非阻塞异步服务器这一思想。对于习惯于线程技术或分叉服务器的开发人员来说,这是一种新颖的编程风格,但它却能在繁重负载的情况下带来极高的效率。

安装

    pip install twisted

    from twisted.internet import protocol, reactor, endpoints

    class Echo(protocol.Protocol):
        def dataReceived(self, data):
            self.transport.write(data)
    class EchoFactory(protocol.Factory):
        def buildProtocol(self, addr):
            return Echo()

    endpoints.serverFromString(reactor, "tcp:1234").listen(EchoFactory())
    reactor.run()

服务端

        #!/usr/bin/env python

        from twisted.application import service, internet
        from txjsonrpc.netstring import jsonrpc

        class Example(jsonrpc.JSONRPC):
            """An example object to be published."""
            def jsonrpc_echo(self,  x):
                """Return all passed args."""
                return x
            def jsonrpc_add(self, a, b):
                """Return sum of arguments."""
                print "add", a, b
                return a + b

        factory = jsonrpc.RPCFactory(Example())
        application = service.Application("Example JSON-RPC Server")
        jsonrpcServer = internet.TCPServer(7080, factory)
        jsonrpcServer.setServiceParent(application)

客户端

        #!/usr/bin/env python

        import os
        import sys
        sys.path.insert(0, os.getcwd())
        from twisted.internet import reactor
        from txjsonrpc.netstring.jsonrpc import Proxy

        def printValue(value):
            print "Result: %s" % str(value)
            reactor.stop()

        def printError(error):
            print 'error', error
            reactor.stop()

        proxy = Proxy('127.0.0.1', 7080)
        proxy.callRemote('add', 3, 5).addCallbacks(printValue, printError)
        reactor.run()
文档更新时间: 2018-11-21 17:54   作者:RuM