global,tornado的write_error,tornado的中间件的写法
发布时间:2020-12-20 10:46:48 所属栏目:Python 来源:网络整理
导读:1. global关键字 :Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global 2.python中引用变量,全局变量是可以引用的,但是修改时必须加global关键字 ? 3.tornado中间件 ? 实现在线人数统计 和登陆验证功能 ? ? from
1.global关键字:Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global 2.python中引用变量,全局变量是可以引用的,但是修改时必须加global关键字 ? 3.tornado中间件 ? 实现在线人数统计 ? ? 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 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): # print(self) # self 是Echohandler的类的实例化对象 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): # print(kwargs)#{‘exc_info‘: (<class ‘Exception‘>,Exception(‘login required‘,),<traceback object at 0x0000020307E9CC08>)} 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()) import tornado.ioloop if __name__ == ‘__main__‘: middleware_list = get_middleware() print(middleware_list) app = Application([(r"/echo",EchoHandler,dict(middleware=middleware_list))]) app.listen(8888) tornado.ioloop.IOLoop.current().start() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |