WEB开发网
开发学院软件开发Python 使用 Twisted Matrix 框架来进行网络编程,第 1 部... 阅读

使用 Twisted Matrix 框架来进行网络编程,第 1 部分

 2008-11-13 13:15:03 来源:WEB开发网   
核心提示:对 Twisted Matrix 进行分类有点像盲人摸象,Twisted Matrix 拥有许多能力,使用 Twisted Matrix 框架来进行网络编程,第 1 部分,彻底理解这些能力的作用需要思维模式进行转变,实际上,它向客户机提供了 Web 服务器最新点击数的记录流,XML 方面的问题在这里不很重要,在我写这第

对 Twisted Matrix 进行分类有点像盲人摸象。Twisted Matrix 拥有许多能力,彻底理解这些能力的作用需要思维模式进行转变。实际上,在我写这第一部分时,对于 Twisted Matrix 我可能也只是一知半解。我们可以一起来掌握它。

对于 Python 最近的一些版本,其优点之一在于,它们“功能齐全(batteries included)” — 即,标准分发版包含的模块可以让您完成大多数编程任务中要完成的几乎任何工作。一般而言,当您想要一个第三方 Python 模块或软件包时,您所要做的是完成某个专门且不寻常的任务。Twisted Matrix 是所描述模式的少数几个例外之一;它是一个精心设计的通用模块集合,用于执行各种形式的网络编程任务,它改变了用 Python 标准库不易于轻松地进行网络编程的局面。

Python 的标准库缺少对异步、非阻塞网络应用程序的支持的说法并不完全正确。模块 asyncore 对单个线程内的 I/O 通道之间进行切换提供了基本支持。但是,Twisted Matrix 将这种风格提高到了一个更高的层次,它提供大量预先构建且可重用的协议、接口和组件。

第一个服务器

Twisted Matrix 附带的文档十分详尽,但却很难掌握。让我们从一个简单的服务器开始,并以之为基础进行构建。在最近一篇 developerWorks技巧文章(请参阅 参考资料以获取链接)中,我演示了一个基于 XML 的“Weblog 服务器”,它向客户机提供了 Web 服务器最新点击数的记录流。XML 方面的问题在这里不很重要,但可以将 SocketServer 及其 ThreadingTCPServer 类作为基线。这个未使用 Twisted Matrix 的服务器包括:

清单 1. SocketServer-weblog.py

  from SocketServer import BaseRequestHandler, ThreadingTCPServer
from time import sleep
import sys, socket
from webloglib import log_fields, hit_tag
class WebLogHandler(BaseRequestHandler):
  def handle(self):
    print"Connected from", self.client_address
    self.request.sendall('<hits>')
    try:
      while True:
        for hit in LOG.readlines():
          self.request.sendall(hit_tag % log_fields(hit))
        sleep(5)
    except socket.error:
      self.request.close()
    print"Disconnected from", self.client_address
if __name__=='__main__':
  global LOG
  LOG = open('access-log')
  LOG.seek(0, 2)   # Start at end of current access log
  srv = ThreadingTCPServer(('',8888), WebLogHandler)
  srv.serve_forever()

1 2 3 4 5 6  下一页

Tags:使用 Twisted Matrix

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接