解决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 相关文章推荐
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
python+opencv轮廓检测代码解析
Jan 05 Python
详解Python之unittest单元测试代码
Jan 24 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
Python实现简单http服务器
Apr 12 Python
Python selenium抓取微博内容的示例代码
May 17 Python
python requests.post带head和body的实例
Jan 02 Python
python下载微信公众号相关文章
Feb 26 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
python和go语言的区别是什么
Jul 20 Python
Python实现Appium端口检测与释放的实现
Dec 31 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 if 想到的些问题
2008/03/22 PHP
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php print EOF实现方法
2009/05/21 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
javascript的BOM
2016/05/03 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
详细解读tornado协程(coroutine)原理
2018/01/15 Python
python调用百度语音REST API
2018/08/30 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
质检的岗位职责
2013/11/17 职场文书
交通安全责任书范本
2014/07/24 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
银行催款通知书
2015/04/17 职场文书
七一慰问简报
2015/07/20 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
2016年寒假家长评语
2015/10/10 职场文书
工作建议书范文
2019/07/08 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript