6

在异步环境中,threading.local不再保证是上下文本地的,因为多个上下文可能共存于单个线程中。大多数异步框架(gevent、eventlet)都提供了get_current_context()识别当前上下文的功能。有些提供了猴子补丁的方法,threading.local因此它对于“greenthreads”或其他特定于框架的上下文是本地的。我在扭曲的文档中找不到这样的功能。我该怎么做呢?

4

1 回答 1

3

我假设你想要这个 API 来保存和检索每个请求的状态。如果不是,那么您可能想澄清您的问题。

Twisted Web 不提供任何类似这些方面的 API。由于您可以控制请求的整个生命周期,因此您可以自己存储任何每个请求的状态:在Resource实例中、在本地、在回调的参数中等等。get_current_context函数是一种多线程等价物使用全局变量来跟踪您的状态。当您以这种方式考虑时,希望您可能更清楚为什么要考虑替代解决方案。

于 2010-05-17T13:08:43.283 回答