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

Pyramidのドキュメントによると、app_iterを使用するまでスレッドローカルスタックをポップしないでください(手順16と18を参照)。ただし、例を実行しようとすると同じ動作が見られます。ドキュメントと動作が競合しているため、そのうちの1つが間違っているため、Pyramidの人々にバグを報告することをお勧めします。

于 2011-06-08T08:31:02.010 に答える
0

もしかしてミス?

return Response(app_iter=test_iter())

また

return Response(app_iter=test_iter)
于 2011-06-08T08:26:56.410 に答える