diff options
Diffstat (limited to 'python/citco_submission_bk.py')
| -rw-r--r-- | python/citco_submission_bk.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/python/citco_submission_bk.py b/python/citco_submission_bk.py new file mode 100644 index 00000000..a6c46aa1 --- /dev/null +++ b/python/citco_submission_bk.py @@ -0,0 +1,43 @@ +from stat import S_ISREG +import time +from contextlib import contextmanager +from report_ops.utils import CitcoSubmission +from paramiko.ssh_exception import SSHException +import logging + + +def close_and_reconnect(): + retries = 5 + for i in range(retries): + try: + CitcoSubmission._sftp.client.close() + CitcoSubmission.init_sftp() + except (SSHException, OSError) as e: + if i == retries - 1: + raise e + else: + time.sleep(60 * i) + else: + return + + +def run(): + CitcoSubmission.init_sftp() + while True: + try: + for f in CitcoSubmission._sftp.client.listdir_iter(): + if S_ISREG(f.st_mode): + try: + CitcoSubmission.process(f.filename) + except ValueError as e: + logging.error(e) + continue + CitcoSubmission.commit() + except (SSHException, OSError): + close_and_reconnect() + time.sleep(60) + CitcoSubmission.check_cache() + + +if __name__ == "__main__": + run() |
