2017-09-25 121 views
1

我目前使用Airflow 1.8.2安排一些EMR任務,然後在我們的Redshift羣集上執行一些長時間運行的查詢。爲此我使用postgres_operator。查詢需要大約30分鐘的時間才能運行。但是,一旦完成,連接就不會關閉,並且操作員運行一個半小時,直到每次以2小時標記終止爲止。終止的消息是服務器意外關閉了連接。Airflow中postgres_operator的問題dag

我檢查了Redshift結束的日誌,它顯示查詢已經運行並且連接已關閉。不知何故,這絕不會回傳給Airflow。我可以檢查的任何方向都會有所幫助。爲了提供更多信息,我的Airflow安裝是https://github.com/puckel/docker-airflow docker映像的擴展,在ECS羣集中運行,並且SQLite作爲後端,因爲我仍在測試Airflow out。另外,我使用sequential executor作爲後端。我希望在這個問題上有任何幫助。

回答

1

我們之前有類似的問題,但我使用SQLAlchemy來Redshift,如果您使用的是postgres_operator,它應該非常相似。看起來Redshift會關閉連接,如果它沒有看到長時間運行的查詢的任何活動,在你的情況下,30分鐘是相當長的查詢。

檢查https://www.postgresql.org/docs/9.5/static/runtime-config-connection.html 你有三個設置,tcp_keepalives_idletcp_keepalives_idletcp_keepalives_count,發送現場消息紅移表示「嘿,我還活着

您可以通過以下作爲參數,所以這樣的事情: connect_args={'keepalives': 1, 'keepalives_idle':60, 'keepalives_interval': 60}

+0

謝謝您的回答。我最終定義了一個自定義運算符和鉤子,讓我重寫keepalives參數。 – shomo