2016-06-20 6 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では失敗したことが確認されます。

エラーをカスタムで処理する方法を教えてください。

答えて

関連する問題