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/
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号