• Tornado基于MiddleWare做中间件


    详细代码如下:

      在app.py里添加

    # -*- coding:utf-8 -*-
    from tornado.ioloop import IOLoop
    from tornado.web import RequestHandler, Application
    
    class MiddleWare(object):
        def process_request(self, handler):
            pass
    
        def process_response(self, handler):
            pass
    
    
    class CheckLogin(MiddleWare):
        def is_login(self, handler):
            pwd = handler.get_argument("pwd", "")
            if not pwd:
                raise Exception("login required")
            else:
                return True
    
        def process_request(self, handler):
            self.is_login(handler)
    
    session_counter = 0
    
    
    class Counter(MiddleWare):
        def process_request(self, handler):
            global session_counter
            session_counter = session_counter + 1
    
    
    class MiddleHandler(RequestHandler):
    
        def initialize(self, middleware):
            self.middleware = middleware
    
        def prepare(self):
            for middleware in self.middleware:
                middleware.process_request(self)
    
        def finish(self, chunk=None):
            super(MiddleHandler, self).finish(chunk)
    
        def write_error(self, status_code, **kwargs):
            exc_cls, exc_instance, trace = kwargs.get("exc_info")
            if status_code != 200:
                self.set_status(status_code)
                self.write({"msg": str(exc_instance)})
    
    
    class EchoHandler(MiddleHandler):
        def get(self):
            message = self.get_argument("msg", "world")
            self.write("hello, %s, current online: %d" % (message, session_counter))
    
    
    def get_middleware():
        return (CheckLogin(), Counter())
    
    if __name__ == '__main__':
        loop = IOLoop.instance()
        middleware_list = get_middleware()
        app = Application([(r"/echo", EchoHandler, dict(middleware=middleware_list))])
        app.listen(8888)
        loop.start()
    

      

  • 相关阅读:
    fastadmin自定义列表下拉框筛选
    printf输出16进制和对齐, fprintf的运用
    微信小程序代码提交发布之后,必须删除原来的小程序才会更新到最新的代码
    win 内存优化
    CRT工具 直连AMZ主机
    解决Jumpserver邮件不发送
    NxShell
    Photoshop 2022 破解版下载
    IDA Pro7.7破解版下载
    MAC下调用已打开浏览器的方法
  • 原文地址:https://www.cnblogs.com/liujiliang/p/8651516.html
Copyright © 2020-2023  润新知