解決Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤
今天拉了一個(gè)使用了tornado
的項(xiàng)目在本地跑,按照源碼作者的步驟配置完,運(yùn)行,直接報(bào)錯(cuò)了,要求環(huán)境Python3.6+
,我裝的是Python3.8
,理論上應(yīng)該直接正常運(yùn)行的,報(bào)錯(cuò)信息:
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
一番谷歌原來(lái)對(duì)于這個(gè)問(wèn)題tornado
的參與者們已經(jīng)收到了很多反饋,有個(gè)回復(fù)里這么說(shuō):
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.8
的asyncio
改變了循環(huán)方式,因?yàn)檫@種方式在windows上不支持相應(yīng)的add_reader APIs
,就會(huì)拋出NotImplementedError
錯(cuò)誤。
解決辦法
找到這個(gè)項(xiàng)目使用的python環(huán)境的lib\site-packages
,做下面的修改,在path-to-python\lib\site-packages\tornado\platform\asyncio.py
開(kāi)頭添加代碼:
import sys if sys.platform == 'win32': asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
這樣就可以正常運(yùn)行了。
總結(jié)
到此這篇關(guān)于Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤的文章就介紹到這了,更多相關(guān)Python3.8運(yùn)行tornado項(xiàng)目報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python制作自動(dòng)推送微信消息提醒的備忘錄功能
這篇文章主要介紹了使用Python制作自動(dòng)推送微信消息提醒的備忘錄功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-09-09pytorch加載自己的圖片數(shù)據(jù)集的2種方法詳解
數(shù)據(jù)預(yù)處理在解決深度學(xué)習(xí)問(wèn)題的過(guò)程中,往往需要花費(fèi)大量的時(shí)間和精力,下面這篇文章主要給大家介紹了關(guān)于pytorch加載自己的圖片數(shù)據(jù)集的2種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06python使用multiprocessing模塊實(shí)現(xiàn)帶回調(diào)函數(shù)的異步調(diào)用方法
這篇文章主要介紹了python使用multiprocessing模塊實(shí)現(xiàn)帶回調(diào)函數(shù)的異步調(diào)用方法,實(shí)例分析了multiprocessing模塊異步調(diào)用的相關(guān)使用技巧,需要的朋友可以參考下2015-04-04Python continue語(yǔ)句實(shí)例用法
在本篇文章里小編給大家整理了關(guān)于Python continue語(yǔ)句實(shí)例用法,有需要的朋友們可以跟著學(xué)習(xí)下。2020-02-02Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究
在Python中,urllib庫(kù)是一個(gè)強(qiáng)大的模塊,用于處理URLs,它包含了多個(gè)子模塊,其中urllib.request是用于發(fā)出HTTP請(qǐng)求的核心組件,本文將深入探討urllib的基本使用、高級(jí)功能以及一些實(shí)際場(chǎng)景的示例,方便更全面地了解這個(gè)重要的網(wǎng)絡(luò)請(qǐng)求工具2024-01-01利用python為PostgreSQL的表自動(dòng)添加分區(qū)
這篇文章主要介紹了利用python為PostgreSQL的表自動(dòng)添加分區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01python環(huán)境功能強(qiáng)大的pip-audit安全漏洞掃描工具
這篇文章主要為大家介紹了python環(huán)境中功能強(qiáng)大的pip-audit安全漏洞掃描工具的功能介紹及安裝使用說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02