解决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实现过滤单个Android程序日志脚本分享
Jan 16 Python
使用python实现接口的方法
Jul 07 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
零基础学python应该从哪里入手
Aug 11 Python
jupyter 添加不同内核的操作
Feb 06 Python
Python字典的基础操作
Nov 01 Python
Python  lambda匿名函数和三元运算符
Apr 19 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
PR值查询 | PageRank 查询
2006/12/20 PHP
开发大型 PHP 项目的方法
2007/01/02 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[00:10]神之谴戒
2019/03/06 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python中的文件和目录操作实现代码
2011/03/13 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Vue详细的入门笔记
2021/05/10 Vue.js
Win11 BitLocker 驱动器加密
2022/04/19 数码科技