扭曲,延迟全跟踪

2024-04-28 19:32:53 发布

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

我只是在学习在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)

我们在操作系统启动文件(自我路径)大回溯:

^{pr2}$

如果我取消注释(自我指挥)在

我们的“日志”很少通过打印(“com”die,d)创建:

('com_die', <twisted.python.failure.Failure <type 'exceptions.NameError'>>)

有没有办法在设计时获取完整的日志\回溯?在

现在我想知道哪里出现了新的错误,有必要对addErrorback的


Tags: 代码selfcomapp应用程序osdef错误
1条回答
网友
1楼 · 发布于 2024-04-28 19:32:53

Twisted Failure object拥有您所需的一切。 要获得良好的回溯,请尝试使用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

在source http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/python/failure.py#L121中查找其他选项,注释非常好。在

注:Named多用于延迟本身,因为结果/错误最好使用res/err

相关问题 更多 >