扭曲。 spawnProcess的processExited错误回调

时间:2016-06-20 14:48:25

标签: python twisted twisted.internet

我正在使用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中它确认失败了。

那么如何才能找到自定义处理失败的错误?

1 个答案:

答案 0 :(得分:0)

您可以将延期对象移交给CommandProtocol,然后让它从那里调用callbackerrback

本页底部记录了以下内容: http://twistedmatrix.com/documents/current/core/howto/process.html