禅Hugozen一个人 + 一群 AI bot 的独立站实践笔记

Stackcontext in tornado

Hugozen · 技术笔记

背景

最近一直在读 tornado 的代码,大概是看懂了骨架。关于结构的部分,google 一下应该会有比较多的分析,我主要想讲下在 tornado/stack_context.py 文件里面的 StackContext 类的作用。

StackContext 是什么

StackContext 从字面意义来说,翻译过来,就是 “堆栈上下文”。拆开来看,就是用 “堆栈” 这种数据结构,保存 “上下文”。

为什么提出 StackContext 这个概念

在 tornado 的 mailing list 里面,motor 库的作者有说到这么一点。大概的意思是说,在把函数扔到异步调用里面的时候(挖坑准备下一篇讲 Futures),如果这个 callback 本身会抛错的话,抛出的异常本身信息是不正确的。而为了修补这个 “bug”,于是就引入了 StackContext 这个概念。

StackContext 用在什么地方

StackCotnext 的用法,我一开始看了下官网的简介,不是很理解。
后来,在 tornado 的 test 目录下,有个 stack_context_test.py 文件,里面写了一整套的测试用例,可以结合来看。你可以看到作者的代码,能清楚的认识到它的作用。
主要作用就是上文提到的保存函数发生的上下文信息。

更多的参考资料

← A dht crawler in pythonThings i learn from scrapy →

评论

评论提交后需审核,通过后才会显示。昵称和邮箱都可以不填;不填昵称会显示「匿名」。邮箱不会公开。

提交即表示同意按隐私说明处理昵称、选填邮箱与网址、正文,以及加盐 IP 哈希。