解决Python3.8运行tornado项目报NotImplementedError错误


Posted in Python onSeptember 02, 2020

今天拉了一个使用了tornado的项目在本地跑,按照源码作者的步骤配置完,运行,直接报错了,要求环境Python3.6+,我装的是Python3.8,理论上应该直接正常运行的,报错信息:

Traceback (most recent call last):
  File "ice_server.py", line 150, in <module>
    RunServer.run_server(port=p, host=h)
  File "ice_server.py", line 125, in run_server
    tornado_server.start()
  File "D:\PycharmProjects\ice\venv\lib\site-packages\tornado\tcpserver.py", line 244, in start
    self.add_sockets(sockets)
  File "D:\PycharmProjects\ice\venv\lib\site-packages\tornado\tcpserver.py", line 165, in add_sockets
    self._handlers[sock.fileno()] = add_accept_handler(
  File "D:\PycharmProjects\ice\venv\lib\site-packages\tornado\netutil.py", line 279, in add_accept_handler
    io_loop.add_handler(sock, accept_handler, IOLoop.READ)
  File "D:\PycharmProjects\ice\venv\lib\site-packages\tornado\platform\asyncio.py", line 100, in add_handler
    self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
  File "C:\Users\huan\AppData\Local\Programs\Python\Python38\lib\asyncio\events.py", line 501, in add_reader
    raise NotImplementedError
NotImplementedError

一番谷歌原来对于这个问题tornado的参与者们已经收到了很多反馈,有个回复里这么说:

Python 3.8 asyncio is going to make the "proactor" event loop the default, instead of the current "selector" event loop. This is a problem for Tornado because the proactor event loop doesn't support the unix-style add_reader APIs that Tornado uses.

Anyone using Tornado 5+ on windows with python 3.8 will need to configure asyncio to use the selector event loop; we'll have to document this. We should also try to detect the use of a proactor event loop and give a clear error message

大概意思Python3.8asyncio改变了循环方式,因为这种方式在windows上不支持相应的add_reader APIs,就会抛出NotImplementedError错误。

解决办法

找到这个项目使用的python环境的lib\site-packages,做下面的修改,在path-to-python\lib\site-packages\tornado\platform\asyncio.py开头添加代码:

import sys

if sys.platform == 'win32':
  asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

这样就可以正常运行了。

总结

到此这篇关于Python3.8运行tornado项目报NotImplementedError错误的文章就介绍到这了,更多相关Python3.8运行tornado项目报错内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python列表推导式的使用方法
Nov 21 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
python字典的常用操作方法小结
May 16 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
简单实现python进度条脚本
Dec 18 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python中bytes和str类型的区别
Oct 21 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
pandas的resample重采样的使用
Apr 24 Python
python实现简易版学生成绩管理系统
Jun 22 Python
详解python with 上下文管理器
Sep 02 #Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 #Python
Python datetime 如何处理时区信息
Sep 02 #Python
浅析python中的del用法
Sep 02 #Python
浅析NumPy 切片和索引
Sep 02 #Python
详解Python 函数参数的拆解
Sep 02 #Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 #Python
You might like
PHP排序算法的复习和总结
2012/02/15 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
canvas绘制七巧板
2017/02/03 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
python在协程中增加任务实例操作
2021/02/28 Python
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
爱国演讲稿500字
2014/05/04 职场文书
相亲大会策划方案
2014/06/05 职场文书
公司员工安全协议书
2014/11/21 职场文书
干部考核工作总结2015
2015/07/24 职场文书
python中sys模块的介绍与实例
2021/04/17 Python