作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我扭曲的 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:
它不是很有帮助,因为它没有引用我的源代码...我也恰好在使用 defer.inlineCallbacks
。知道可能出了什么问题吗?
最佳答案
如果您没有任何其他关于出现问题的提示(例如您的单元测试指出了导致此问题的特定情况,或者如果 pyfunc 的回答没有明确说明为什么会发生这种情况),那么启用延迟调试获取有关指定 Deferred 的第一个(也是唯一允许的)结果的信息:
from twisted.internet import defer
defer.setDebugging(True)
或者
twistd --debug [...]
或者
trial --debug [...]
您将获得额外的堆栈跟踪以及与您遇到的错误报告类似的错误报告。额外的堆栈跟踪将告诉您所讨论的 Deferred 是在哪里创建的,以及它是在哪里第一次被调用的(调用了 .callback() 或 .errback())。
由于您使用的是 inlineCallbacks
,因此您无法获得有关实际错误发生位置的良好堆栈跟踪,但有关首次触发 Deferred 的位置的信息可能会给您提示后续激活可能来自哪里。
不幸的是,增加的模糊性只是目前使用 inlineCallbacks
的代价。这可能是可以克服的,但需要有人来承担这项任务。
关于python - 扭曲:无用的 "AlreadyCalled"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807666/
我扭曲的 python 程序经常喷出这条消息: Unhandled error in Deferred: Traceback (most recent call last): File "c:\p
我是一名优秀的程序员,十分优秀!