博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
twisted network programming essentials 读书体会
阅读量:2233 次
发布时间:2019-05-09

本文共 1483 字,大约阅读时间需要 4 分钟。

首先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

你可能感兴趣的文章
PCA 的数学原理和可视化效果
查看>>
机器学习中常用评估指标汇总
查看>>
什么是 ROC AUC
查看>>
Bagging 简述
查看>>
详解 Stacking 的 python 实现
查看>>
简述极大似然估计
查看>>
用线性判别分析 LDA 降维
查看>>
用 Doc2Vec 得到文档/段落/句子的向量表达
查看>>
使聊天机器人具有个性
查看>>
使聊天机器人的对话更有营养
查看>>
一个 tflearn 情感分析小例子
查看>>
attention 机制入门
查看>>
手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目
查看>>
GAN 的 keras 实现
查看>>
AI 在 marketing 上的应用
查看>>
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>