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()

posted @   宋桓公  阅读(252)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示