
Python Twisted
文章平均质量分 94
墨痕诉清风
始于情,行于心。
展开
-
PyCharm安装Twisted库(报错:Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Stu)
报错信息解决方案先安装wheelpip install wheel去官方找对应的版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted以我的版本为例: 其他版本会报错:ERROR: Twisted-20.3.0-cp39-cp39-win_amd64.whl is not a supported wheel on this platform.离线下载完包后,将包拖动至工程目录下,直接安装即可 (venv) F:原创 2020-09-07 16:14:47 · 1214 阅读 · 0 评论 -
Twisted twisted.python.log日志
一个日志监视器是可调用的,并且只接受一次字典作为参数。这条信息是从sys.stdout中捕获的,例如这条信息是从print输出的。如果isError同样为True,则是从sys.stderr来的。如果你使用twistd来运行你的程序作为后台进程,则他会自动托管startLogging,甚至还会自动轮训日志。标准的日志监视器将会忽略他们不用的字典参数。一个布尔值,如果为True时就是从log.err过来的。日志信息,一个列表或字符串,被log.msg或log.err传递过来的。,提供了以天为单位的日志轮询。原创 2019-12-04 17:30:10 · 567 阅读 · 0 评论 -
Twisted web介绍
建立一个Request类的子类作为请求工厂,或者说请求发布器,其中有识别不同的URL并的能力,通过字典找到该URL对应的函数,调用这个函数并传递self参数。在HTTP协议中,连接之后还有个生成HTTP请求报文的过程,所以构造出了一个Request对象来处理具体的一个HTTP请求的报文。提取请求参数的重点在request.args字典,每个键都是映射到一个列表,为了适应HTTP提交中一个键对应多个值的情况,当然,你也可以只取第一个值。包含请求的数据,这里都是指Request类的成员。原创 2019-12-04 17:27:54 · 398 阅读 · 0 评论 -
Twisted中的putChild和getChild
Twisted的官方文档上对于putChild的解释是“Register a static child”(点击打开链接),即为当前资源节点注册一个静态子资源节点。实际上,Resource类中的putChild实现的是IResource接口中的putChild方法(点击打开链接)。 Resource类中还有一个getChild方法,官方文档的解释是“Retrieve a 'child' resource from me. Implement this to create dynamic reso原创 2019-10-08 15:30:59 · 652 阅读 · 0 评论 -
解决twisted客户端连接过多导致崩溃问题(too many file descriptors in select)
error:too many file descriptors in select大众观点:from twisted.protocols.policies import TimeoutMixinclass TimeoutTester(protocol.Protocol, policies.TimeoutMixin): conn_timeout = 3 data...原创 2019-09-16 11:41:33 · 1074 阅读 · 0 评论 -
Twisted SSH
Twisted是一个网络应用程序框架。在这篇文章里,你会学习到如何在twisted中使用Secure shell(SSH)来完成各种实用的工作任务。这篇文章摘自《wisted Network Programming Essentials》第十章,作者是 Abe Fettig (O’Reilly, 2007; ISBN: 0596100329). Copyright © 2007 O’Reilly ...翻译 2019-05-28 10:11:56 · 1009 阅读 · 0 评论 -
python 网络框架twisted基础学习及详细讲解
twisted网络框架的三个基础模块:Protocol, ProtocolFactory, Transport.这三个模块是构成twisted服务器端与客户端程序的基本。Protocol:Protocol对象实现协议内容,即通信的内容协议ProtocolFactory: 是工厂模式的体现,在这里面生成协议Transport: 是用来收发数据,服务器端与客户端的数据收发与处理都是基于这个模块...转载 2019-05-27 18:27:59 · 422 阅读 · 1 评论 -
twisted系列教程十九–cancel deferred
Introductiontwisted 是一个正在发展的项目,twisted 的开发者们会添加一些新的特色或者扩展旧的.随着twisted 10.1.0 的发布,开发者们增加了一个新的功能–取消,这个就是我们今天要讲的内容.异步的程序把request 和response 进行了解耦,于是增加了一个新的可能:在发送一个请求和得到返回结果之间你可以决定是否你还要返回结果.细想一下第十四部分的poe...翻译 2019-05-26 11:12:12 · 630 阅读 · 0 评论 -
twisted系列教程十八–异步操作的并行运行
Introduction在上一部分我们学习了一种新的用生成器来组织一系列异步callbacks 的方法.加上deferred,我们已经有两种组织异步操作的方法了.有时候,我们想让一组异步操作并行的运行.因为twisted 是单线程的,它不会真正的并行的运行,但是我们想要异步的I/O 在一组任务上运行的尽可能的快.比如我们的poetry client,从多个server上同时下载诗,而不是一个接...翻译 2019-05-25 01:13:36 · 561 阅读 · 0 评论 -
twisted系列教程十七–用inlineCallbacks来管理callbacks
Introduction在这一部分我们继续回到callback.我们将介绍用生成器来写callbacks.我们会讲到这个技巧怎么工作的,还有它和Deferred 的比较.最后我们会用这个技巧重写我们的poetry client.首先我们要回顾一下生成器是怎样工作的,人后我们就会明白为什么它是创造callbacks 的一个替代品.A Brief Review of Generators你可能已...翻译 2019-05-25 01:13:32 · 1027 阅读 · 0 评论 -
twisted系列教程十六–twisted守护进程
Introduction到目前为止我们写的server 还运行在一个终端里面,通过print 语句向外输出内容.开发的时候这样做是很有好处的,但是当你部署一个产品的时候这样就不好了.一个生产环境中的server应该是:作为一个守护进程运行,不和任何的终端和会话相连.你不会希望当你登出的时候,你的server 也会退出把debug和错误信息输出到一个日志文件中,或者syslog...翻译 2019-05-25 01:13:27 · 854 阅读 · 0 评论 -
twisted系列教程十五–测试twisted代码
Introduction在这个系列中我们也已经写了很多twisted 代码了,但目前为止我们忽略了一个很重要的事情—测试.你可能也一直在想我们怎样用一个同步的测试框架unitest来测试我们的异步的程序.简短的回答是不能,我们已经发现,同步的程序和异步的程序不能混合在一起.最起码不会很好的结合在一起.幸运的是,twisted 已经包含了他自己的异步测试测试框架–trial.我们也可以用它来测试...翻译 2019-05-25 01:13:21 · 440 阅读 · 0 评论 -
twisted系列教程十四— pre-fireed deferred
Introduction在这一部分我们将要学习deferred 类的另外的一个方面.为了促进讨论,我们要为我们的poetry service增加一个server.假设我们有大量的内部的client 想要连接一个相同的外部的server.假设这个server已经很慢而且已经负载很高了.我们不想再让server上连接更多的client 了.所以我们会创建一个缓存代理服务器.当一个client 连接...翻译 2019-05-25 01:13:17 · 341 阅读 · 0 评论 -
twisted系列教程十三–deferred 中的deferred
Introduction回想一下第十部分的poetry client 5.1,client 用一个deferred 来管理一个callback 链,这个callback 链中调用了一个transformation 引擎,在client 5.1 中,这个引擎是作为一个同步的函数来实现的.现在我们想写一个新的client,让它利用我们在第十二部分写的transformation service.问...翻译 2019-05-25 01:13:12 · 455 阅读 · 0 评论 -
twisted系列教程十二–为server 增加一个service
One More Server在第九部分和第十部分我们介绍了关于诗歌的变形引擎的想法,最后我们实现了cummingsifier,我们还让它抛出随机的异常来模拟错误.但是假如这个变形的引擎在另外一台服务器上,提供一种网络的”poetry transformation service”, 那么现在又多出来一种出错的方式:变形引擎挂掉了.所以在第十二部分我们将要实现一个poetry transfor...翻译 2019-05-25 01:13:07 · 614 阅读 · 0 评论 -
twisted系列教程十一 — 一个twisted 的服务端
A Twisted Poetry Server既然我们已经学了这么多twisted client 的编写,现在让我们来用twisted来重新实现一下我们的poetry server 吧.我们要多谢谢twisted 抽象的普遍性,貌似我们已经学了twisted 的我们需要知道的大部分东西了.看下我们的twisted poetry server twisted-server-1/fastpoetry...翻译 2019-05-25 01:13:02 · 1392 阅读 · 0 评论 -
twisted系列教程十–可以变化的诗
Client 5.0现在我们将要想我们的client中加入一些变形逻辑.但是首先我不得不说:我不知道怎样写一个Byronification 引擎,它超出我的能力范围了.做为替代,我会实现一个相对简单的变形–Cummingsifier.Cummingsifier 是可以把一首诗变成令一首cumming风格的诗的算法.下面就是这个算法的实现:def cummingsify(poem)re...翻译 2019-05-25 01:12:56 · 316 阅读 · 0 评论 -
twisted系列教程九–Deferred 的第二个小插曲
More Consequence of Callbacks我们将要再来研究一下callback,尽管我们已经对deferred比较了解而且已经可以写出twisted 风格的异步程序,Deferred 类提供了更多的特色来进行处理一些更复杂的设置.所以我们要想出一些更复杂的设置来看看用callback编程的时候能给我们造成哪些挑战.然后我们会研究deferred是怎样处理这些挑战的.为了激发我...翻译 2019-05-25 01:12:49 · 296 阅读 · 0 评论 -
twisted系列教程八–延迟的诗
Client 4.0既然我们已经对deferred有些了解了,我们可以用deferred 来重写我们的poetry client,你可以在这里找到client 4.0 twisted-client-4/get-poetry.py.我们的get_poetry 函数不再需要callback 和 errback这两个参数.相反的,它返回一个deferred,我们可以在它上面附加一些callback ...翻译 2019-05-24 21:28:01 · 280 阅读 · 0 评论 -
twisted系列教程七–小插曲,延迟对象
在第六部分,我们得出这样一个结论:callbacks 是twisted异步编程的一个重要组成部分.callback 是交织在twisted结构中的,而不仅仅是连接reactor 的一种方法.所以用twisted 或者其他的基于reactor 的异步程序,就意味着把我们的程序组织成被reator触发的callback链.甚至像我们的简单的get_poetry方法都需要两个callback,一个用来...翻译 2019-05-24 21:26:52 · 358 阅读 · 0 评论 -
twisted系列教程六–继续重构twisted poetry client
Poetry for Everyone我们已经在我们的client取得了很大的进步,我们的2.0版本已经试用了Transports,Protocols 和Protocols Factories.但是仍有很多可以提升的地方.2.0 版本的client版本仅仅可以在命令行下载诗.这是因为PoetryClientFactory 不仅仅负责下载诗,也负责在下载完的时候停掉这个程序.这对一个Protoco...翻译 2019-05-24 21:25:56 · 307 阅读 · 0 评论 -
twisted系列教程五–改进twisted poetry client
在第四部分我们写了我们的第一个twisted client.它工作的非常好,但仍旧有提升的空间首先,这个twisted client 包含了一些比如创建sockets 和从这些sockets 中接收数据的细节.twisted 已经对这些操作提供了支持,所以我们没有必要自己再去实现.这个特别有用因为异步的I/O在处理异常方面需要一些技巧,如果需要支持多平台的话需要更多的技巧.如果你有一个空闲的下午...翻译 2019-05-24 21:24:44 · 409 阅读 · 0 评论 -
python twised系列教程四–twisted Poetry client
我们第一个twisted client尽管twisted 经常被用来写server端的,但client往往会比较简单些,我们就以最简单的client 开始.源代码在twisted-client-1/get-poetry.py,首先开启server:python blocking-server/slowpoetry.py --port 10000 poetry/ecstasy.txt--nu...翻译 2019-05-24 20:27:20 · 529 阅读 · 0 评论 -
python twisted教程 三–开始twisted
什么也不做,the twisted way最后我们决定重新用twisted来实现我们异步的读诗的客户端.但首先让我们写一些twisted代码找找twisted 的感觉.下面是一个简单到屁的twisted程序,源码在basic-twisted/simple.pyfrom twisted.internet import reactorreactor.run()你可以像这样运行它:pytho...翻译 2019-05-24 20:12:32 · 636 阅读 · 0 评论 -
python twisted教程 二:缓慢的诗
我的假设我假设你已经有一些基本的能力去写python程序,并且直到一些socket编程方面的额知识,如果你没有接触过socket请移步这里 socket module documention, 这个系列中的代码例子都是运行在python2.5 和twisted 8.2.0,程序如果不能正确运行请检查你的python和twisted 的版本.获取例子代码你可以在public git repos...翻译 2019-05-24 19:56:49 · 428 阅读 · 1 评论 -
python twisted教程一,异步编程
前言最近有人在twisted邮件列表中问有没有一个可以让人快速学习twisted的文档.总体的来说:这个系列不是这样的一个文档.如果你没有很多时间或者耐心的话,这个系列的文章不太适合你.不过,如果你对异步编程了解很少的话,相信一个简短的介绍也不让你完全明白,当然如果你是天才除外.我学习和使用twisted已经好几年了,通过这几年的学习和工作我得出的结论就是:学习twisted困难的地方就是对异...翻译 2019-05-24 19:44:15 · 1041 阅读 · 1 评论 -
Python twisted框架使用解析
安装:pip installtwisted==15.2.1帮助:Usage: twistd [options]Options:--savestats 保存stats对象,而不是探查器的文本输出。-o, --no_save 关闭时不保存状态-e, --encrypted 指定的TAP/...原创 2019-05-22 10:42:14 · 1062 阅读 · 0 评论