私は、ワークフローハンドラとしてLuigiを統合しようとしてきました。現在はコンコースを利用していますが、私たちがやろうとしていることの多くは、コンコースで回るのが面倒なので、ルイージを依存マネージャーに切り替えました。これまでのところ問題はなく、ワークフローが適切に起動して実行されます。Pythonでのイベント処理Luigi
タスクは何らかの理由でタスクが失敗したときに発生します。この場合、特にタスクのブロックが必要ですが、すべてのケースを考慮する必要があります。現時点では、Luigiはエラーを正常に処理し、それをSTDOUTに書き込みます。それでも、コード0を発行して終了しますが、コンコースにはジョブが渡されたことを意味します。偽陽性
も、非常に簡単な仕事で、私はこの問題を解決するためにイベント処理を取得しようとしてきたが、私はそれをトリガすることができません :
@luigi.Task.event_handler(luigi.Event.FAILURE)
def mourn_failure(task, exception):
with open('/root/luigi', 'a') as f:
f.write("we got the exception!") #testing in concourse image
sys.exit(luigi.retcodes.retcode().unhandled_exception)
class Test(luigi.Task):
def requires(self):
raise Exception()
return []
def run(self):
pass
def output(self):
return []
はその後のpythonシェルでコマンドを実行している
luigi.run(main_task_cls=Test, local_scheduler=True)
例外は発生しますが、それでも発生しません。 それは
[retcode]
already_running=10
missing_data=20
not_run=25
task_failed=30
scheduling_error=35
unhandled_exception=40
が含まれています、私は/etc/luigi/client.cfgで私のルイージの設定を持っている違いがあれば、また、ファイルが書き込まれません。また、終了コードがまだ0
です私はイベントハンドラがなぜトリガされないのかについては迷っていますが、何とかエラーが発生した場合にプロセスが失敗する必要があります。
私はluigiの使い方についてはあまりよく分かりませんが、テストが失敗すると基本的にゼロ以外の終了コードが必要になります。 コンコースイベントフローはかなりシンプルです。 1. task.ymlに指定されたスクリプトを実行します。 2.スクリプトの終了コードに基づいて緑色または赤色になります –