Twisted提供了一套扩平台、高扩展的基于服务器和客户端模式的应用程序框架。本文看重Twisted框架在应用程序部署上的特色。另外,Twisted是Python语言所写,提供了除顺序、并发模型以外的事件驱动模型,结构简单、易用。python
Twisted使用了zope interface,所以,该处的服务(service)与接口有关系,即实现了IService的类即为服务。IService提供了两个接口react
服务和应用程序的关系:一个或多个服务能够组建成为一个application服务器
application做为容器类型存在,容纳一个或多个service。服务在application中注册,经过后文所述的twistd来检索和运行。并发
传统上,开发者负责Twisted的启停和配置。在Twisted Application Framework中,协议实现和启停、配置分开,其中协议实如今普通的python文件中,而启停、配置在TAC文件中,这样作的好处是reactor和配置可由外部程序来管理。app
传统的Twisted程序能够转化为Twisted Application Framework程序。框架
# echo.py 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() reactor.listenTCP(8000, EchoFactory()) reactor.run()
转化为TAF程序工具
# 协议实现 # echo.py 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() # Twisted Application Framework # echo_server.tac from twisted.application import internet, service application = service.Application("echo") echoService = internet.TCPServer(8000, EchoFactory()) echoService.setSetviceParent(application)
twistd是跨平台的部署TAC程序的工具。twistd提供后台化应用程序、指定log路径、丢弃权限、在chroot下运行等功能。测试
运行TAC应用程序ui
twistd -y echo_server.tac
在current directory下会生成log和pid文件。经过查看pid文件。另外,须要注意的是在测试环境下Mac系统下,进程名中没有python字符串,经过grep查python是找很少该进程的,因此能够经过pid文件和搜索twistd关键字来查看。插件