在网站上显示地图,金湖县网站建设,怎样做代刷网站长,北京外贸网站优化响应输出 - write
原型
self.write()函数
源码中是这样定义的
def write(self, chunk: Union[str, bytes, dict]) - None:作用
将chunk数据写到缓冲区
刷新缓冲区的四种方式
程序中断手动刷新缓冲区满了遇到\n
当你写了一个print之后,不是直接就显示在黑屏中断…响应输出 - write
原型
self.write()函数
源码中是这样定义的
def write(self, chunk: Union[str, bytes, dict]) - None:作用
将chunk数据写到缓冲区
刷新缓冲区的四种方式
程序中断手动刷新缓冲区满了遇到\n
当你写了一个print之后,不是直接就显示在黑屏中断上面的,而是先到缓冲区走一个趟
只是我们python演示不了,这个得用C语言来演示,还得是Linux系统才行,两种条件都不具备
C程序演示
这里我们需要gcc或者g(编译C的)
# includestdio.h
int main(){while(1){printf(hello);sleep(0.05);}return 0;
}基础
代码演示
class WriteHandler(RequestHandler):def get(self):self.write(write page info tornado!)self.write(write page nicie tornado!)self.write(write page coll tornado!)self.write(write page beautiful tornado!)你会发现他们是连着的,因为我都写在了缓冲区里面# 刷新缓冲区, 并关闭当前请求通道self.finish()# 如果我不写他,当我们的程序结束,他也会刷新了# 下面这行就写丢了self.write(write page wonderful tornado!)利用write方法写JSON数据
在Django那时候是不是有JsonResponse 比如在豆瓣影评 当我们往下滚轮的时候请求JSON数据 在本地通过创建DOM的方式进行加载的
接口调用顺序
方法
initialize()
prepare()
作用: 预处理方法,在执行对应的请求方法之前调用注意: 任何一种HTTP请求,都会执行prepare()方法这个prepare有点想Django里面的中间件,但是中间件能够在之前或者之后来执行这个只是在HTTP方法之前执行能够用于一些,比如反爬虫,我要是不想让你正常请求,不给你响应内容,那我这里直接来个error直接跳过write就OK了判断用户是否符合规格
HTTP方法
get(参数在URL后面)
优点:速度快缺点:承载的数据量低,安全性相对低
post(参数单独打包)
优点:速度慢缺点:承载的数据量高,安全性相对高了那么一丢丢一般用于修改服务器上面的数据,使用post,其他的就用get吧
head
类似get请求,只不过响应中没有具体的内容,用于获取报头的,一般你不会用
delete
请求服务器删除指定的资源的
put
从客户端向服务器传送指定的内容
patch
请求修改局部内容
options
返回URL支持所有的HTTP方法
set_default_headers()方法
write_error()方法
on_finish()方法
作用:在请求处理结束后调用应用: 我们能在改方法中进行一个资源的清理释放或者说一个日志的处理 这个内存释放,我们通常不处理,以为这个python也有自带的垃圾回收机制我们可以对于数据分析的原资料比如对于访客的身份统计,喜好判断,对于调整本站的内容排行有所参考 注意: 尽量不要在该方法中进行相应输出这里做的是服务器内部的一些处理,不能关客户端的事儿
我们可以进行打印出来看一看
class IndexHandler(RequestHandler):def initialize(self) - None:print(init_initialize)def prepare(self):print(prepare)def get(self):print(get_start)self.write(main page info tornado!)def set_default_headers(self) - None:print(:set_default_headers)def write_error(self, status_code: int, **kwargs: Any) - None:print(write_error)def on_finish(self) - None:print(on_finish)
执行的结果顺序如下
:set_default_headers
init_initialize
prepare
get_start
on_finish另一种方式,带有错误的情况
class IndexHandler(RequestHandler):def initialize(self) - None:print(init_initialize)def prepare(self):print(prepare)def get(self):self.send_error(500)print(get_start)self.write(main page info tornado!)def set_default_headers(self) - None:print(:set_default_headers)def write_error(self, status_code: int, **kwargs: Any) - None:print(write_error)self.write(服务器内部错误!!!)def on_finish(self) - None:print(on_finish)执行的结果顺序如下
:set_default_headers
init_initialize
prepare
:set_default_headers
write_error
on_finish
get_start执行的顺序总结
在正常情况下,没抛出错误时 :set_default_headers:设置头init_initialize:初始化处理prepare:预处理,预处理也需要头,所以在他后面get_start:开始处理on_finish:善后 抛出错误时 set_default_headers:init_initialize:prepare:set_default_headers:又重新执行了一遍头,这里write_error:on_finish:get_start:
这个顺序你得记住,其实也不用,你要是忘了就回来看就行了,但是你要理解其中的每个函数的作用
相似文章 tornado学习笔记day01 tornado学习笔记day02 tornado学习笔记day03 tornado学习笔记day04 tornado学习笔记day05 tornado学习笔记day06 tornado学习笔记day07 tornado学习笔记day08