解决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 相关文章推荐
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
Python正则表达式完全指南
May 25 Python
python简单图片操作:打开\显示\保存图像方法介绍
Nov 23 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
新手学python应该下哪个版本
Jun 11 Python
Python自省及反射原理实例详解
Jul 06 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
python实现双向链表原理
May 25 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
解析js如何获取css样式
2016/12/11 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python把1变成01的步骤总结
2019/02/27 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
delegate与普通函数的区别
2014/01/22 面试题
校长岗位职责
2013/11/26 职场文书
清洁工岗位职责
2014/01/29 职场文书
高校教师自荐信范文
2014/03/13 职场文书
岗位职责怎么写
2014/03/14 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
空气的环保标语
2014/06/12 职场文书
求职简历自荐信
2014/06/18 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
公司市场部岗位职责
2015/04/15 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL