解决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实现获取某天是某个月中的第几周
Feb 11 Python
详解Python中的各种函数的使用
May 24 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
Tensorflow卷积神经网络实例
May 24 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python zip()函数使用方法解析
Oct 31 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
Python Django模型详解
Oct 05 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
多文件上载系统完整版
2006/10/09 PHP
php URL编码解码函数代码
2009/03/10 PHP
PHP实现的购物车类实例
2015/06/17 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
初学者学习Python好还是Java好
2020/05/26 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
params有什么用
2016/03/01 面试题
应届生个人求职信模板
2013/11/26 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
家长学校培训材料
2014/08/20 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python