Tornado—接口调用时方法执行顺序

import tornado.web       # web服务
import tornado.ioloop    # I/O 时间循环
 
class MainHandler(tornado.web.RequestHandler):
    def initialize(self,name):
    	self.name = name
        print 'initialize方法执行'
        
    def prepare(self):
        print 'prepare方法执行'
    
    def set_default_headers(self):
        print 'set_default_headers方法执行'
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
        
    # 响应以get方式发起的请求
    def get(self, *args, **kwargs):
    	print 'get方法执行'
        self.write("hello world!")
        
    # 响应以post方式发起的请求
    def post(self, *args, **kwargs):
        print 'post方法执行'
        self.write(json.dumps({"status": "success", "data": task_list}))
        
    def on_finish(self):
        print 'on_finish方法执行'
    
    def write_error(self, status_code, **kwargs):
        print 'write_error方法执行'
        super().write_error(status_code, **kwargs)
 
app = tornado.web.Application([
        (r"/index", MainHandler, dict(name="name")),
    ])
 
if __name__ == "__main__":
    app.listen(8000)  # 监听端口
    # tornado.ioloop.IOLoop.current().start()
    tornado.ioloop.IOLoop.instance().start()  # 开始事件

在正常情况下没跑出错误的顺序:

  • set_default_headers:设置头
  • initialize:初始化
  • prepare:预处理(类似于django的中间件作用)
  • HTTP方法(get、post....)
  • on_finish:响应结束后的处理

跑出异常错误的情况下的顺序:

  • set_default_headers
  • initialize
  • prepare
  • http
  • set_default_headers:这里错误信息 是因为响应错误,需要修改头
  • write_error:重写错误信息
  • on_finish:响应结束后做内存释放,日志处理等操作

https://blog.csdn.net/qq_20042935/article/details/100325953

https://www.cnblogs.com/qianzhengkai/p/11348023.html

原文地址:https://www.cnblogs.com/liuhaidon/p/12021269.html