我正在用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来自定义处理失败呢?你知道吗
您可以将延迟对象交给
CommandProtocol
,并让它从那里调用callback
和errback
。你知道吗本页底部记录了: http://twistedmatrix.com/documents/current/core/howto/process.html
相关问题 更多 >
编程相关推荐