0

使用以下示例代码:

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')

我收到当前请求: None。所以,threadlocal里面不工作app_iter?我有实际的代码,我需要访问threadlocal远离视图的几个层,并且传递request变量会很麻烦。

4

2 回答 2

0

也许是错误?

return Response(app_iter=test_iter())

或者

return Response(app_iter=test_iter)
于 2011-06-08T08:26:56.410 回答
0

根据Pyramid 文档,在使用 app_iter 之前不应弹出线程本地堆栈(请参阅步骤 16 和 18),尽管当我尝试运行您的示例时,我看到的行为与您相同。由于文档和行为冲突其中一个是错误的,我建议向 Pyramid 人员提交一个错误

于 2011-06-08T08:31:02.010 回答