view python/example/waiter.py @ 922:74dc16f074be default tip

ignore ff merges
author Jeff Hammel <k0scist@gmail.com>
date Thu, 03 Oct 2024 05:36:19 -0700
parents 9f85111f3dee
children
line wrap: on
line source

#!/usr/bin/env python

"""
wait for a process writing to stdout to keep an
(e.g.) ssh connection alive
"""

import subprocess
import sys
import time

KEEPALIVE = 300  # s
SLEEP = 1


def main(args=sys.argv[1:]):
    """CLI"""

    last = start = time.time()
    proc = subprocess.Popen(args)

    while proc.poll() is None:
        if time.time() - last > KEEPALIVE:
            last = time.time()
            print ("[{} s] waiting for process: {}".format(last-start, subprocess.list2cmdline(args)))
            sys.stdout.flush()
    exit(proc.poll())

if __name__ == '__main__':
    main()