为什么Pylons使用StackedObjectProxies而不是threading.local?

时间:2009-11-06 10:36:44

标签: python pylons

似乎threading.local更直接,更健壮。

2 个答案:

答案 0 :(得分:5)

StackedObjectProxy在其下使用threading.local。 Pylons不使用plain threading.locals有两个原因:

1)它是一个比代理更具侵入性的API。例如。 request()。POST.get('file')vs request.POST.get('file')

2)StackedObjectProxys不仅是线程安全的,而且还“请求安全” - 这意味着将Pylons应用程序嵌入另一个应用程序并引用相同的代理对象是安全的。对这种安全性的需求很少,但对于WSGI应用程序调用其他WSGI应用程序和使用全局对象有多么容易,这肯定是可能的

有关详细信息,请参阅paste.registry docs

答案 1 :(得分:1)

因为threading.local在Python 2.4中是新的StackedObjectProxy如果可以,则使用threading.local。