Cla*_*diu 5 python debugging twisted
我扭曲的python程序经常不停地喷出这条消息:
Unhandled error in Deferred:
Traceback (most recent call last):
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 757, in gotResult
_inlineCallbacks(r, g, deferred)
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 747, in _inlineCallbacks
deferred.errback()
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 269, in errback
self._startRunCallbacks(fail)
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 312, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 328, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 243, in callback
self._startRunCallbacks(result)
File "c:\python25\lib\site-packages\twisted\internet\defer.py", line 298, in _startRunCallbacks
raise AlreadyCalledError
twisted.internet.defer.AlreadyCalledError:
Run Code Online (Sandbox Code Playgroud)
它没有太大帮助,因为它没有引用我的源代码......我也碰巧使用了defer.inlineCallbacks.知道可能出了什么问题吗?
如果你没有任何关于出错的其他提示(比如你的单元测试指出导致这种情况的特定情况,或者如果pyfunc的答案没有明确说明为什么会发生这种情况),那么启用延迟调试以获取信息关于指定Deferred的第一个(也是唯一允许的)结果的位置:
from twisted.internet import defer
defer.setDebugging(True)
Run Code Online (Sandbox Code Playgroud)
要么
twistd --debug [...]
Run Code Online (Sandbox Code Playgroud)
要么
trial --debug [...]
Run Code Online (Sandbox Code Playgroud)
您将获得额外的堆栈跟踪,其中包含您遇到的错误报告.额外的堆栈跟踪将告诉您创建的Deferred的位置以及首次调用它的位置(调用了.callback()或.errback()).
由于您正在使用inlineCallbacks,因此您无法获得有关实际错误发生位置的良好堆栈跟踪,但有关首次触发Deferred的位置的信息可能会提示您后续激活可能来自何处.
不幸的是,增加的默默无闻仅仅是inlineCallbacks目前使用的成本.这可能是可以克服的,但有人需要承担这项任务.
| 归档时间: |
|
| 查看次数: |
2443 次 |
| 最近记录: |