部署Twisted Application
概述
Twisted提供了一套扩平台、高扩展的基于服务器和客户端模式的应用程序框架。本文看重Twisted框架在应用程序部署上的特点。另外,Twisted是Python语言所写,提供了除顺序、并发模型之外的事件驱动模型,结构简单、易用。
Twisted Application Framework 组成部分
- 服务
- 应用程序
- TAC文件( Twisted Application Configuration)
- 插件
- twistd命令行工具
服务
Twisted使用了zope interface,因此,该处的服务(service)与接口有关系,即实现了IService的类即为服务。IService提供了两个接口
- startService
- stopService
服务和应用程序的关系:一个或多个服务可以组建成为一个application
应用程序
application作为容器类型存在,容纳一个或多个service。服务在application中注册,通过后文所述的twistd来检索和运行。
TAC 文件列表
传统上,开发者负责Twisted的启停和配置。在Twisted Application Framework中,协议实现和启停、配置分开,其中协议实现在普通的python文件中,而启停、配置在TAC文件中,这样做的好处是reactor和配置可由外部程序来管理。
传统的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应用程序
twistd -y echo_server.tac
在current directory下会生成log和pid文件。通过查看pid文件。另外,需要注意的是在测试环境下Mac系统下,进程名中没有python字符串,通过grep查python是找不多该进程的,所以可以通过pid文件和搜索twistd关键字来查看。
参考
- Twisted network programming essentials 2nd edtion.
来源:oschina
链接:https://my.oschina.net/u/106482/blog/152202