美文网首页
py3.7更新PEP492导致的坑点

py3.7更新PEP492导致的坑点

作者: GGG1235 | 来源:发表于2018-09-13 18:42 被阅读0次

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

相关文章

网友评论

      本文标题:py3.7更新PEP492导致的坑点

      本文链接:https://www.haomeiwen.com/subject/rqdggftx.html