【问题标题】:threading.local equivalent for twisted.web?与twisted.web 等效的threading.local?
【发布时间】:2011-02-20 09:05:06
【问题描述】:
在异步环境中,threading.local 不再保证是上下文本地的,因为多个上下文可能共存于单个线程中。大多数异步框架(gevent、eventlet)都提供get_current_context() 功能来识别当前上下文。有些提供了一种猴子补丁threading.local 的方法,因此它对于“greenthreads”或其他特定于框架的上下文是本地的。我在扭曲的文档中找不到这样的功能。我该怎么做?
【问题讨论】:
标签:
python
twisted
twisted.web
【解决方案1】:
我假设您需要此 API 来保存和检索每个请求的状态。如果不是,那么您可能需要澄清您的问题。
Twisted Web 不提供与这些相关的任何 API。由于您可以控制请求的整个生命周期,可能您可以自己存储任何每个请求的状态:在 Resource 实例上、在本地、在回调的参数中等等。 get_current_context 函数有点类似于使用全局变量来跟踪您的状态的多线程。当您以这种方式考虑时,希望您会更清楚为什么要考虑替代解决方案。