Я не могу получить доступ к объекту request
в моем контроллере Pylons 0.9.7, когда я установил debug = false
в файле .ini. У меня есть следующий код:
def run_something(self):
print('!!! request = %r' % request)
print('!!! request.params = %r' % request.params)
yield 'Stuff'
При включенной отладке все работает нормально и печатает:
!!! request = <Request at 0x9571190 POST http://my_url>
!!! request.params = UnicodeMultiDict([... lots of stuff ...])
Если я установлю debug = false
, я получу следующее:
!!! request = <paste.registry.StackedObjectProxy object at 0x4093790>
Error - <type 'exceptions.TypeError'>: No object (name: request) has been registered for this thread
Трассировка стека подтверждает, что ошибка находится в строке print('!!! request.params = %r' % request.params)
.
Я запускаю его с помощью сервера Paste, и эти две строки - самые первые строки в моем методе контроллера.
Это происходит только в том случае, если в методе есть операторы yield
(хотя операторы не достигнуты). Я предполагаю, что Pylons видит, что это метод генератора, и запускает его в каком-то другом потоке. Мои вопросы:
- Как мне заставить его работать с
debug = false
?
- Почему он работает с
debug = true
? Очевидно, что это довольно опасная ошибка, поскольку я обычно разрабатываю с debug = true
, поэтому она может остаться незамеченной во время разработки.