tornado 报错 NotImplementedError
今天跑之前的一个tornado ,突然就报错了NotImplementedError,之前还还好好的。
原来是Python版本更新到3.8出的问题。
大概是Python3.8的asyncio改变了循环方式,因为这种方式在windows上不支持相应的add_reader APIs,就会抛出NotImplementedError错误。
于是乎加了一句:
import sys
import asyncio
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
这样就不报错了。
完整代码如下:
from abc import ABC
import tornado.ioloop
import tornado.web
import time
import sys
import asyncio
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
class ListHandler(tornado.web.RequestHandler, ABC):
def get(self):
self.write("Get Handler ListHandler")
def post(self):
headers = self.request.headers
body = self.request.body
print(headers)
b2 = str(body, encoding='UTF-8')
print(b2)
time.sleep(0.5)
self.write("Post Handler ListHandler")
class HeartHandler(tornado.web.RequestHandler, ABC):
def get(self):
#print(self.get_argument("name"), self.get_argument("code"))
r = {
"success": True,
"Message": "添加成功!",
"code": 200,
"result": None
}
self.write(r)
def post(self):
headers = self.request.headers
body = self.request.body
print(headers)
b2 = str(body, encoding='UTF-8')
print(b2)
self.write("Test Post Handler")
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/quality/business/supplier/list', ListHandler),
(r'/quality/business/supplier/heart', HeartHandler),
]
tornado.web.Application.__init__(self, handlers)
if __name__ == "__main__":
app = Application()
app.listen(8000)
print("Tornado Started in port 8000,http://127.0.0.1:8000")
tornado.ioloop.IOLoop.current().start()
作者:宋桓公
出处:http://www.cnblogs.com/douzi2/
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律