我正在使用Twisted的ProcessProtocol运行命令。
我正在使用文档脚手架,我有几个事件,如inConnectionLost,connectionMade等
但是当流程结束时,会触发此事件:
def processExited(self, reason):
print 'processExited, status %d' % (reason.value.exitCode,)
if reason.value.exitCode == 0:
print 'SUCCESS!!!'
else:
print 'ERROR!!!'
raise RuntimeError, 'some custom error message'
正如您所看到的,我正在尝试提高错误以将其捕获到较高级别。 我正在使用这样的延迟包装命令调用:
def success_pipeline(success):
log.debug('The pipeline has finished correctly.')
def failure_pipeline(error, command):
log.debug('The pipeline failed...')
command = CommandProtocol()
reactor.spawnProcess(command, application_bin, command_arguments, {})
d = Deferred()
d.addCallback(success_pipeline)
d.addErrback(failure_pipeline, command)
return d
但是,虽然命令失败(我手动错误输入参数),但它总是进入成功回调。 reason.value.exitCode为1,因此在bash中它确认失败了。
那么如何才能找到自定义处理失败的错误?
答案 0 :(得分:0)
您可以将延期对象移交给CommandProtocol
,然后让它从那里调用callback
和errback
。
本页底部记录了以下内容: http://twistedmatrix.com/documents/current/core/howto/process.html