From 9af452aee53dd300535dadd108ce3e60c5f11a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobiasz=20K=C4=99dzierski?= Date: Wed, 3 Feb 2021 13:46:55 +0100 Subject: [PATCH] Add retryer to SFTP hook connection (#13065) --- airflow/providers/sftp/hooks/sftp.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/airflow/providers/sftp/hooks/sftp.py b/airflow/providers/sftp/hooks/sftp.py index e2a991e8704f2..7727b9dbb74da 100644 --- a/airflow/providers/sftp/hooks/sftp.py +++ b/airflow/providers/sftp/hooks/sftp.py @@ -21,6 +21,8 @@ from typing import Dict, List, Optional, Tuple import pysftp +import tenacity +from paramiko import SSHException from airflow.providers.ssh.hooks.ssh import SSHHook @@ -109,6 +111,12 @@ def __init__(self, ftp_conn_id: str = 'sftp_default', *args, **kwargs) -> None: ) self.key_file = extra_options.get('private_key') + @tenacity.retry( + stop=tenacity.stop_after_delay(10), + wait=tenacity.wait_exponential(multiplier=1, max=10), + retry=tenacity.retry_if_exception_type(SSHException), + reraise=True, + ) def get_conn(self) -> pysftp.Connection: """Returns an SFTP connection object""" if self.conn is None: