пирамида - threadlocal не работает внутри app_iter ответа - PullRequest
0 голосов
/ 08 июня 2011

со следующим примером кода:

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 вокруг.

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Согласно документации Pyramid локальный стек потока не должен выталкиваться до тех пор, пока не будет использован app_iter (см. Шаги 16 и 18), хотя при попытке запуска я вижу то же поведение, что и у вас.твой пример.Так как документация и поведение противоречат друг другу, я рекомендую сообщить об ошибке людям из Пирамиды.

0 голосов
/ 08 июня 2011

Может быть ошибка?

return Response(app_iter=test_iter())

или

return Response(app_iter=test_iter)
...