异常回溯:缺少上部帧

2024-09-28 20:45:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的stacktrace中,我错过了上面的帧。在

谁在中调用了callback()ioloop.py458号线?在

stacktrace来自一个unittest测试用例。所有的测试都通过了,但是这个回溯记录在日志中并且是可重复的。在

我看不出异常是在测试用例的哪个测试中引发的。在

ERROR    [25950] Exception in callback <functools.partial object at 0x5358368>
Traceback (most recent call last):
  File "/home/modwork_foo_dtg/lib/python2.7/site-packages/tornado/ioloop.py", line 458, in _run_callback
    callback()
  File "/home/modwork_foo_dtg/lib/python2.7/site-packages/tornado/stack_context.py", line 331, in wrapped
    raise_exc_info(exc)
  File "/home/modwork_foo_dtg/lib/python2.7/site-packages/tornado/stack_context.py", line 302, in wrapped
    ret = fn(*args, **kwargs)
  File "/home/modwork_foo_dtg/src/websocketrpc/websocketrpc/client.py", line 71, in connect
    self.ws = websocket_connect(self.args.url)
  File "/home/modwork_foo_dtg/src/websocketrpc/websocketrpc/client.py", line 179, in websocket_connect
    conn = websocket.WebSocketClientConnection(io_loop, request)
  File "/home/modwork_foo_dtg/lib/python2.7/site-packages/tornado/websocket.py", line 777, in __init__
    raise Exception('%s %s' % (request, request.url))
Exception: <tornado.httpclient._RequestProxy object at 0x535cb10> None

我怎么能用龙卷风看到上面的stacktrace帧?在

例外本身并不是问题所在。在


Tags: inpyhomefoolibpackageslinecallback
2条回答

回调由调用ioloop.py:458,就像上面说的。没有显示外部堆栈帧,因为异常没有转义该帧。让您困惑的是,回调继续重新引发先前捕获的异常。在

在Python2中,保留回溯以便以后重新提升是很麻烦的(在Python3中会更好)。龙卷风通常在这里做正确的事情,但有一些缺口,回溯会被截断。在当前版本中,我注意到的主要问题是AsyncHTTPClient倾向于丢弃回溯(在修复这个问题时,存在一些令人讨厌的向后兼容性问题)。在

作为调试时的一个粗略的解决方法,您可以尝试打印traceback.format_堆栈在抛出异常之前(至少在可以修改代码的地方,正如您在这里添加异常所做的那样)websocket.py). 在

您可以使用^{}sys.exc_info打印,以查看具体发生了什么问题。在

相关问题 更多 >