2016-06-20 90 views
0

錯誤回調我正在用Twisted的ProcessProtocol運行一個命令。扭曲。在spawnProcess的processExited

我使用的文件支架和我有幾個事件,如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來自定義處理失敗呢?

回答