twisted.web的threading.local等价物?

use*_*486 6 python twisted twisted.web

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

Jea*_*one 3

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

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