Twisted是基于事件驱动的网络引擎框架,支持Python2.7和3.3+。它包括很多不同的模块,如:
twisted.web:HTTP客户和服务端,HTML模板,和一个WSGI服务器
twisted.conch:基于SSHv2和Telnet协议的的客户端,服务器和终端模拟器
twisted.words:基于IRC,XMPP和其他IM协议的客户端和服务器
twisted.mail:基于IMAPv4,POP3,SMTP的客户端和服务器
twisted.positioning:和NMEA(国际海上电子协会)兼容的GPS接收者通信的工具
twisted.names:DNS客户端和工具可用于构建自己的DNS服务器
twisted.trial:和基于Twisted的代码高度整合的单元测试框架
twisted支持所有主流的事件轮询机制:select(所有平台)、poll(大部分POSIX平台)、epoll(Linux)、kqueue(FreeBSD,OSX)、OCP(Windows)和各种GUI事件轮询机制(GTK+2/3、QT、wxWidgets)。第三方的reactors也可以加入到twisted中来支持额外的事件轮询机制。
Python3.7中使用twisted库却会用到"SyntaxError: invalid syntax"(语法错误)
提示语法错误的位置并不在我们写的代码,而是在我们下载的第三方库中。通过上网查找,发现提示这个错误跟py3.7的新特性有关。
在py3.5时提出的PEP492提案在py3.7中正式生效。(以前的版本中也有,但是得
from __future__ import generator_stop
)之前写异步协程时我们会用到名为asyncio的标准库。
python也是在python 3.4中引入了协程的概念。
Py3.5的提案中,有一条就是:将协程的概念从生成器中拎了出来,并添加了新的关键词async\await。
async/await 关键字:python3.5用于定义协程的关键字,async定义一个协程,await用于挂起阻塞的异步调用接口。
SyntaxError: invalid syntax
语法错误的原因在于async是py37的关键词,不能作为关键字参数。修改方法也很简单,把报错的文件中全部的async修改为其他非py37关键词的名称。
Pyspider、scrapy语法错误就是这个原因,改一下源文件里的async
网友评论