diff options
Diffstat (limited to 'python/quantifi_upload_status.py')
| -rw-r--r-- | python/quantifi_upload_status.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/python/quantifi_upload_status.py b/python/quantifi_upload_status.py new file mode 100644 index 00000000..32aa8267 --- /dev/null +++ b/python/quantifi_upload_status.py @@ -0,0 +1,45 @@ +import time +from contextlib import contextmanager +from paramiko.ssh_exception import SSHException + +from report_ops.status import QuantifiRemote +from report_ops.logger import get_logger + +logger = get_logger(__name__) + + +@contextmanager +def retry_on_exception_sftp(): + yield + + +def close_and_reconnect(): + retries = 5 + for i in range(retries): + try: + with retry_on_exception_sftp(): + QuantifiRemote._client.client.close() + QuantifiRemote.init_client() + except (SSHException, OSError) as e: + if i == retries - 1: + raise e + else: + time.sleep(60 * i) + else: + return + + +def run(): + while True: + try: + for f in QuantifiRemote._client.list_files("/OUTGOING/Status"): + QuantifiRemote.process(f) + except (SSHException, OSError) as e: + logger.info(e) + close_and_reconnect() + time.sleep(60) + QuantifiRemote.check_cache() + + +if __name__ == "__main__": + run() |
