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

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

 2008-11-13 13:15:03 来源:WEB开发网   
核心提示: 除了创建每个客户机线程的开销之外,这个基于 SocketServer 的服务器一个引人注目的特性在于它对其处理程序内的 time.sleep() 使用阻塞调用,使用 Twisted Matrix 框架来进行网络编程,第 1 部分(2),对于 Twisted Matrix 的非阻塞 sele

除了创建每个客户机线程的开销之外,这个基于 SocketServer 的服务器一个引人注目的特性在于它对其处理程序内的 time.sleep() 使用阻塞调用。对于 Twisted Matrix 的非阻塞 select() 循环,这样的阻塞是不允许的。

第一个非阻塞方法将任何人为的延迟推给客户机,让客户机明确地请求每批新的 Weblog 记录(它也发送一条消息以表明缺少记录,而不是什么都不发送)。这个使用 Twisted Matrix 的服务器看起来类似:

清单 2. twisted-weblog-1.py

  from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory
from webloglib import hit_tag, log_fields
class WebLog(Protocol):
  def connectionMade(self):
    print"Connected from", self.transport.client
    self.transport.write('<hits>')
  def dataReceived(self, data):
    newhits = LOG.readlines()
    ifnot newhits:
      self.transport.write('<none/>')
    for hit in newhits:
      self.transport.write(hit_tag % log_fields(hit))
  def connectionLost(self, reason):
    print"Disconnected from", self.transport.client
factory = Factory()
factory.protocol = WebLog
if __name__=='__main__':
  global LOG
  LOG = open('access-log')
  LOG.seek(0, 2)   # Start at end of current access log
  reactor.listenTCP(8888, factory)
  reactor.run()

上一页  1 2 3 4 5 6  下一页

Tags:使用 Twisted Matrix

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