pulumi/sdk/go/common/util/cmdutil/testdata/graceful.py

31 lines
706 B
Python

import signal
import sys
import time
import os
signal_received = False
def signal_handler(signal, frame):
global signal_received
signal_received = True
signal.signal(signal.SIGINT, signal_handler)
if hasattr(signal, "SIGBREAK"):
# SIGBREAK is only available on Windows
signal.signal(signal.SIGBREAK, signal_handler)
print("ready", flush=True)
# HACK:
# time.sleep on Windows doesn't seem to be interruptible by signals
# so we'll sleep in small increments.
timeout = 3.0
while timeout > 0:
if signal_received:
print("exiting cleanly", flush=True)
sys.exit(0)
time.sleep(0.05)
timeout -= 0.05
print("error: signal not received", file=sys.stderr)
sys.exit(1)