【发布时间】:2014-11-11 07:59:09
【问题描述】:
我正在阅读 Flask 文档(特别是 Foreword for Experienced Programmers chapter)并且我阅读了这个 -
Flask 的设计决策之一是简单的任务应该简单;他们不应该占用很多代码,但他们不应该限制你。正因为如此,Flask 的设计选择很少,有些人可能会感到惊讶或不正统。例如,Flask 在内部使用线程本地对象,因此您不必在请求中从一个函数到另一个函数传递对象以保持线程安全。这种方法很方便,但需要有效的请求上下文来进行依赖注入或尝试重用使用与请求挂钩的值的代码。 Flask 项目对线程局部变量是诚实的,不会隐藏它们,并在使用它们的代码和文档中调用。
这是什么意思?具体如下问题-
- 什么是线程本地对象?它们的使用方式和时间以及它们的用途是什么?
- 在内部使用线程局部对象如何确保线程安全以及将对象传递给函数如何导致线程不安全?
- 在这种情况下,有效的请求上下文是什么意思?
【问题讨论】: