部署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.
相关文章
相关标签/搜索