解决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 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
python使用sqlite3时游标使用方法
Mar 13 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
pycharm创建一个python包方法图解
Apr 10 Python
Django Rest framework三种分页方式详解
Jul 26 Python
在Python 的线程中运行协程的方法
Feb 24 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
python中封包建立过程实例
Feb 18 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
django中websocket的具体使用
Jan 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
学习使用curl采集curl使用方法
2012/01/11 PHP
php读取本地json文件的实例
2018/03/07 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
jquery实现拖动效果
2016/08/10 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python同时给两个收件人发送邮件的方法
2015/04/30 Python
python求解水仙花数的方法
2015/05/11 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
自主招生自荐信格式
2013/12/03 职场文书
上课睡觉检讨书
2014/01/28 职场文书
运动会通讯稿100字
2014/01/31 职场文书
运动会稿件200字
2014/02/07 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
学校中秋节活动总结
2015/03/23 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
Golang表示枚举类型的详细讲解
2021/09/04 Golang
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers