当我在.ini文件中设置debug = false
时,我无法访问我的Pylons 0.9.7控制器中的request
对象。我有以下代码:主机错误“没有对象(名称:请求)已注册此线程”debug = false
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)
行。
我使用粘贴服务器运行它,这两行是我的控制器方法中的第一行。
只有在方法中有yield
语句(即使未达到语句)时才会发生这种情况。我猜测Pylons认为这是一个生成器方法,并在其他线程上运行它。我的问题是:
- 如何使它与
debug = false
一起使用? - 它为什么与
debug = true
一起使用?显然这是一个相当危险的错误,因为我通常使用debug = true
进行开发,所以在开发过程中可以忽略它。
也许调试= false是否在中间件.py中排除RegistryManager? – 2010-03-23 14:52:50