部署Twisted应用程序笔记

扶醉桌前 提交于 2019-11-30 04:16:44

部署Twisted Application

概述

Twisted提供了一套扩平台、高扩展的基于服务器和客户端模式的应用程序框架。本文看重Twisted框架在应用程序部署上的特点。另外,Twisted是Python语言所写,提供了除顺序、并发模型之外的事件驱动模型,结构简单、易用。

Twisted Application Framework 组成部分

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

服务

Twisted使用了zope interface,因此,该处的服务(service)与接口有关系,即实现了IService的类即为服务。IService提供了两个接口

  1. startService
  2. 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关键字来查看。

参考

  1. Twisted network programming essentials 2nd edtion.
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!