2017-09-25 2 views
1

現在、Airflow 1.8.2を使用してEMRタスクをスケジュールし、Redshiftクラスタで長期実行クエリを実行しています。その目的のために、私はpostgres_operatorを使用しています。クエリの実行には約30分かかります。しかし、作業が完了すると、接続は決して終了せず、オペレーターは毎回2時間マークで終了するまで1時間半以上実行されます。終了時のメッセージは、サーバーが予期せず接続を終了したことです。エアフローダグのpostgres_operatorに関する問題

Redshiftの終了時にログを確認しました。クエリが実行され、接続が閉じられていることを示しています。どういうわけか、それは決してエアフローに伝達されません。私が確認できるものがあれば、どんな方向にも役立ちます。私のAirflowのインストールは、https://github.com/puckel/docker-airflowドッカーイメージの拡張であり、ECSクラスタで実行されており、まだAirflowをテストしているので、バックエンドとしてSQLiteを持っています。また、私はsequential executorをバックエンドに使用しています。私はこの問題について何か助けていただければ幸いです。

答えて

1

私はRedshiftにSQLAlchemyを使用していますが、postgres_operatorを使用している場合は非常に似ています。 Redshiftは長い実行クエリのアクティビティが表示されない場合は接続を閉じるようだ、あなたのケースでは、30分はかなり長いクエリです。

チェックhttps://www.postgresql.org/docs/9.5/static/runtime-config-connection.html あなたが引数として以下を渡すことができ

ねえ、私はまだ生きている」を示すために、赤方偏移するライブメッセージを送る3つの設定、tcp_keepalives_idletcp_keepalives_idletcp_keepalives_countを持っているので、このような何か: connect_args={'keepalives': 1, 'keepalives_idle':60, 'keepalives_interval': 60}

+0

ありがとうございました。私はkeepalivesパラメータをオーバーライドできるカスタム演算子とフックを定義しました。 – shomo