金字塔 - threadlocal在Response的app_iter中不起作用

时间:2011-06-08 08:00:12

标签: python pyramid thread-local webob

使用以下示例代码:

from webob import Response
from paste.httpserver import serve


def test_iter():
    from pyramid import threadlocal
    yield 'current request: %s' % threadlocal.get_current_request()


def hello_world(request):
    return Response(app_iter=test_iter())


if __name__ == '__main__':
    from pyramid.config import Configurator
    config = Configurator()
    config.add_view(hello_world)
    app = config.make_wsgi_app()
    serve(app, host='0.0.0.0')

我收到当前请求:无。那么,threadlocalapp_iter内无效?我有实际的代码,我需要从视图中访问几个层threadlocal,并且传递request变量会很麻烦。

2 个答案:

答案 0 :(得分:0)

也许错了?

return Response(app_iter=test_iter())

return Response(app_iter=test_iter)

答案 1 :(得分:0)

根据Pyramid docs,在使用app_iter之后不应弹出线程局部堆栈(参见步骤16和18),尽管我在尝试运行您的示例时看到了与您相同的行为。由于文档和行为冲突其中一个是错误的,我建议{Pyler人员使用filing a bug