2009年4月9日星期四

twisted学习笔记1

最在项目中用到twisted,所以对于它就有了一个比较初级的认识。
对于在python中大名鼎鼎的twisted,想必相当多人是知道的。使用了之后确实让人感觉很爽!
好了,不广告了。


学习twisted的资料中文比较少,不过还是有许多博客对它有介绍的。我学习主要是看《Twisted Network Programming Essentials 》,和twisted的官方网站 。这两个资源都是比较好了,当然还有它的mail list。

1. why twisted
  • python-powered
  • Asynchronous & event-based,这点很重要,异步且事件驱动
  • open source
  • community-backed
  • an integration-friendly platform
2. Start twisted event loop
  • twisted是事件驱动的网络编程框架,它和一般程序的区别就在于它不是按程序员事先的设定的顺序来执行,而是对外部事件而作出反应。就像gui中,对于用户点击一个Button事件,而程序作出的反应。用户点击button就是一个事件。
  • 响应事件其实就是一个不断的循环,而在twisted里,有个类reactor就是来做这个事情的。此外,它还要做调度,线程,连接网络及监听端口等。
3.Establish a TCP connection
  • 在twisted中对于这个例子,要用到是reactor, protocol,要建一个tcp客户端,然后连接到一个服务端的80端口上。
from twisted.internet import reactor, protocol
class QuickDisconnectProtocol(protocol.Protocol):
def connectionMade(self):
print "Connected to %s." % self.transport.getPeer( ).host
self.transport.loseConnection( )
class BasicClientFactory(protocol.ClientFactory):
protocol = QuickDisconnectProtocol
def clientConnectionLost(self, connector, reason):
print "Lost connection: %s" % reason.getErrorMessage( )
reactor.stop( )
def clientConnectionFailed(self, connector, reason):
print "Connection failed: %s" % reason.getErrorMessage( )
reactor.stop( )
reactor.connectTCP('www.google.com', 80, BasicClientFactory( ))
reactor.run( )
——————————————————————————————————————————————————

没有评论: