扭曲的。调用spawnProcess的ProcessExit时出错

2024-10-05 14:25:43 发布

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

我正在用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中它被确认失败了。你知道吗

那么,如何捕获一个errback来自定义处理失败呢?你知道吗


Tags: debug命令logpipelinevaluedef错误事件