使用Twisted Application 框架
翻译by:pako
email/gtalk:zealzpc@gtalk.com
目标:
?
介绍twisted Application 结构
介绍如何使用.tac文件和twistd部署twisted application
介绍twisted services
?
?
?
概要
?
Twisted application框架负责启动和停止你的应用程序。使用application框架中已经实现了的那些工具可以使你方便的实现 daemo,logging,选择一个reactor等功能,而不用为此再做那些枯燥的工作。
?
?
Twisted applications 最主要的工具是一个命令行的组件叫twistd。Twistd 实现了跨平台,在运行Twisted applications时强烈推荐使用它。
?
Twisted Application 框架最重要的组件就是 twisted.application.service.Application类,代表了你的应用程序。当然,Application类不会提供所有你想实现的功能。事实上,Application类更像一个services的容器,里面可以包容若干个service。你所要做的就是用过Application这个框架来实现里面的一个个services。
?
对于“service”,我们是指那些可以启动和停止的程序。通常来说service包括web servers ,FTP servers,和ssh 客户端。你的Application对象可以容纳许多service,通过IServiceCollections类甚至可以是一个有结构层次的service。
?
下面是一个简单的Application结构例子,它实现了一个echo tcp服务跑在7001端口上。
?
?
from twisted.application import internet, servicefrom twisted.names import server, dns, hostsport = 53# Create a MultiService, and hook up a TCPServer and a UDPServer to it as# children.dnsService = service.MultiService()hostsResolver = hosts.Resolver('/etc/hosts')tcpFactory = server.DNSServerFactory([hostsResolver])internet.TCPServer(port, tcpFactory).setServiceParent(dnsService)udpFactory = dns.DNSDatagramProtocol(tcpFactory)internet.UDPServer(port, udpFactory).setServiceParent(dnsService)# Create an application as normalapplication = service.Application("DNSExample")# Connect our MultiService to the application, just like a normal service.dnsService.setServiceParent(application)?
?
?
?
?
?