使用以下示例代码:
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')
我收到当前请求:无。那么,threadlocal
在app_iter
内无效?我有实际的代码,我需要从视图中访问几个层threadlocal
,并且传递request
变量会很麻烦。
答案 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。