【发布时间】:2012-06-19 18:46:11
【问题描述】:
默认情况下,webapp2 在模块时是线程安全的 webapp2_extras.local 可用。
如果我查看the source code,我会看到本地用于存储应用程序和请求。然而,我的印象是所有线程(我在主模块中创建的那个)之间只有一个应用程序(WSGIApplication)实例共享,所以当应用程序实例存储在线程局部变量中时,它实际上是同一个实例,这意味着以下代码(取自webapp2_extras)实际上不是线程安全的(get_app 中的应用实际上是在所有线程之间共享的,即使它是从线程本地存储中提取的):
app = app or webapp2.get_app()
mako = app.registry.get(key)
if not mako:
mako = app.registry[key] = factory(app)
我在这里错过了什么?
【问题讨论】: