diff options
Diffstat (limited to 'python/citco_submission2.py')
| -rw-r--r-- | python/citco_submission2.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/python/citco_submission2.py b/python/citco_submission2.py new file mode 100644 index 00000000..6ded8224 --- /dev/null +++ b/python/citco_submission2.py @@ -0,0 +1,47 @@ +import time +import logging +from stat import S_ISREG +from paramiko.ssh_exception import SSHException + +from report_ops.status import CitcoSubmission + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +def close_and_reconnect(): + retries = 5 + for i in range(retries): + try: + CitcoSubmission._client.client.close() + CitcoSubmission.init_client("citco", folder="/outgoing/notifications") + except (SSHException, OSError) as e: + if i == retries - 1: + raise e + else: + time.sleep(60 * i) + else: + return + + +def run(): + CitcoSubmission.init_client("citco", folder="/outgoing/notifications") + while True: + try: + for f in CitcoSubmission._client.client.listdir_iter( + "/outgoing/notifications" + ): + if S_ISREG(f.st_mode): + try: + CitcoSubmission.process(f.filename) + except ValueError as e: + logger.info(e) + except (SSHException, OSError) as e: + logger.info(e) + close_and_reconnect() + time.sleep(60) + CitcoSubmission.check_cache() + + +if __name__ == "__main__": + run() |
