扭曲的,延迟的完全回溯
问题描述:
我只是学习在Twisted上编写应用程序,所以犯了很多错误。扭曲的,延迟的完全回溯
假设有一个代码:
d = defer.Deferred()
d.addCallback(self.start_app)
#d.addErrback(self.command_die)
d.callback(0)
def start_app(self, d):
#import os
return os.startfile(self.path)
def command_die(self, d):
print ('com_die', d)
我们在os.startfile(self.path)错误和大回溯:
Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:/Dropbox/my_py/client3.py", line 100, in command_analiz
d.callback(i)
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 361, in callback
self._startRunCallbacks(result)
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 455, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:/Dropbox/my_py/client3.py", line 353, in start_eve_d
return os.startfile(self.path)
exceptions.NameError: global name 'os' is not defined
如果我取消#d.addErrback(自我。 command_die)
我们有一点 “登录” 通过印刷( 'com_die' 创建,d):
('com_die', <twisted.python.failure.Failure <type 'exceptions.NameError'>>)
有没有办法在设计时获得完整的Log \ TraceBack?
此刻我明白,那里有一个新的错误,有必要作出评论addErrorback单曲
答
扭转失败对象有你需要的一切。 为了得到很好的回溯尝试使用printTraceback()方法:
>>> from twisted.internet.defer import Deferred as D
>>> def start_app(_):
... #import os
... return os.startfile('sasa')
...
... def command_die(err):
... err.printTraceback()
...
...
... d = D()
... d.addCallback(start_app)
... d.addErrback(command_die)
... d.callback(0)
Traceback (most recent call last):
File "C:\Users\Pilyavskiy\AppData\Local\DreamPie\share\dreampie\subp-py2\dreampielib\subprocess\__init__.py", line 324, in execute
exec codeob in self.locs
File "<pyshell#3>", line 12, in <module>
d.callback(0)
File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 361, in callback
self._startRunCallbacks(result)
File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 455, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "<pyshell#3>", line 3, in start_app
return os.startfile('sasa')
exceptions.NameError: global name 'os' is not defined
寻找它漂亮的很好的注释源http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/python/failure.py#L121其他选项。
PS:名称d主要用于延期本身,结果/错误,最好使用像RES /犯错等