解决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 相关文章推荐
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Python反转序列的方法实例分析
Mar 21 Python
浅谈python中requests模块导入的问题
May 18 Python
深入浅析python 中的匿名函数
May 21 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
Python argparse模块使用方法解析
Feb 20 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
pytorch 实现变分自动编码器的操作
May 24 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
如何过滤高亮显示非法字符
2006/10/09 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
PHP多个版本的分析解释
2011/07/21 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
利用Python爬取可用的代理IP
2016/08/18 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
护理专业自我鉴定
2014/01/30 职场文书
村级四风对照检查材料
2014/08/24 职场文书
人事专员岗位职责
2015/02/03 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书