#!/usr/bin/env python3 import os import signal import subprocess import sys def main() -> int: port = os.environ.get("PORT", "7860") server_cmd = [ "otree", "prodserver1of2", f"0.0.0.0:{port}", ] worker_cmd = [ "otree", "prodserver2of2", ] server_proc = subprocess.Popen(server_cmd) worker_proc = subprocess.Popen(worker_cmd) def shutdown(signum, frame): worker_proc.terminate() server_proc.terminate() signal.signal(signal.SIGTERM, shutdown) signal.signal(signal.SIGINT, shutdown) # wait for worker first (since it will block until stop) worker_return = worker_proc.wait() server_proc.terminate() server_proc.wait() return worker_return if __name__ == "__main__": sys.exit(main())