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關鍵字來查看。插件