部署Twisted應用程序筆記

部署Twisted Application

概述

Twisted提供了一套擴平臺、高擴展的基於服務器和客戶端模式的應用程序框架。本文看重Twisted框架在應用程序部署上的特色。另外,Twisted是Python語言所寫,提供了除順序、併發模型以外的事件驅動模型,結構簡單、易用。python

Twisted Application Framework 組成部分

  1. 服務
  2. 應用程序
  3. TAC文件( Twisted Application Configuration)
  4. 插件
  5. twistd命令行工具

服務

Twisted使用了zope interface,所以,該處的服務(service)與接口有關係,即實現了IService的類即爲服務。IService提供了兩個接口react

  1. startService
  2. stopService

服務和應用程序的關係:一個或多個服務能夠組建成爲一個application服務器

應用程序

application做爲容器類型存在,容納一個或多個service。服務在application中註冊,經過後文所述的twistd來檢索和運行。併發

TAC 文件列表

傳統上,開發者負責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

twistd是跨平臺的部署TAC程序的工具。twistd提供後臺化應用程序、指定log路徑、丟棄權限、在chroot下運行等功能。測試

運行TAC應用程序ui

twistd -y echo_server.tac

在current directory下會生成log和pid文件。經過查看pid文件。另外,須要注意的是在測試環境下Mac系統下,進程名中沒有python字符串,經過grep查python是找很少該進程的,因此能夠經過pid文件和搜索twistd關鍵字來查看。插件

參考

  1. Twisted network programming essentials 2nd edtion.
相關文章
相關標籤/搜索