twisted network programming essentials 读书体会

首先twisted是在python结构下的一个事件驱动的网络框架。

你能够在此基础上做出遵循各种协议的client--server结构的软件应用.

刚刚读了第一大章 An Intrduction to twisted主要有例如以下体会:


1) 所谓的事件驱动是指程序的执行是由外在的因素决定的,比方GUI程序依赖的是用户的鼠标操作。网络程序依赖的是client的送回来的消息。在twisted中事情的驱动体如今re-actor中。所谓re-actor本质就是一个处理事件的循环。

2) protocal和transports的分离,协议和数据的传输是分开来的,作者这种思维是为了更好的拓展性。

3) factory设计模式在protocal中的应用。全部的协议都是由一个factory产生的,有些global的内容放到factory中比較合适。由于他能够保存protocal销毁后的内容。

4) 作者的整本书的流程就是从代码開始,然后解释代码。这种流程比較easy让人接受非常好。

5) telnel是个非常好的debug的工具,用来模拟client各种的输入响应非常适用。

6) defereds是为了让程序能异步运行的回调函数。他须要处理正常的和错误的情况,另外还要注意的是他能够有若干个处理组合成一个chain。

7) 整个库的使用结构很的清晰明了,一看代码就能理解。


前面几点是库的基础的理解,以下是一个更加详细的web样例

8)HTTP GET协议格式例如以下,他是text based协议,所以比較有趣的是在telnet中输入例如以下文本相同能够触发网络server的响应

GET / HTTP/1.1
Host: www.google.com

9)以下是我见过的最简单的server,启动他,然后在浏览器敲 localhost:8000, 你会发现什么呢?

fromtwisted.protocolsimportbasic
fromtwisted.internetimportprotocol,reactor

classHTTPEchoProtocol(basic.LineReceiver):def__init__(self):

        self.lines = []

deflineReceived(self,line):self.lines.append(line)ifnotline:

            self.sendResponse()

defsendResponse(self):
self.sendLine("HTTP/1.1 200 OK")
self.sendLine("")
responseBody="You said:\r\n\r\n"+"\r\n".join(self.lines)self.transport.write(responseBody)self.transport.loseConnection()

classHTTPEchoFactory(protocol.ServerFactory):defbuildProtocol(self,addr):

returnHTTPEchoProtocol()reactor.listenTCP(8000,HTTPEchoFactory())

reactor.run()
10)和django的差别。django是template,而twisted是用来制作template。这是他们的差别。






转载于:https://www.cnblogs.com/ljbguanli/p/6869318.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值