Import source: main
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent
|
||||
|
||||
telegram_file = BASE_DIR / "telebot.py"
|
||||
s3_worker_file = BASE_DIR / "rub.py"
|
||||
|
||||
telegram_proc = None
|
||||
s3_worker_proc = None
|
||||
|
||||
try:
|
||||
s3_worker_proc = subprocess.Popen([sys.executable, str(s3_worker_file)])
|
||||
telegram_proc = subprocess.Popen([sys.executable, str(telegram_file)])
|
||||
print(
|
||||
f"Started S3 worker pid={s3_worker_proc.pid} and Telegram worker pid={telegram_proc.pid}",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
while True:
|
||||
if s3_worker_proc.poll() is not None:
|
||||
raise RuntimeError(f"S3 worker exited with code {s3_worker_proc.returncode}")
|
||||
if telegram_proc.poll() is not None:
|
||||
raise RuntimeError(f"Telegram worker exited with code {telegram_proc.returncode}")
|
||||
time.sleep(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
except RuntimeError as e:
|
||||
print(e, file=sys.stderr)
|
||||
finally:
|
||||
for proc in [telegram_proc, s3_worker_proc]:
|
||||
if proc and proc.poll() is None:
|
||||
proc.terminate()
|
||||
for proc in [telegram_proc, s3_worker_proc]:
|
||||
if proc and proc.poll() is None:
|
||||
try:
|
||||
proc.wait(timeout=10)
|
||||
except subprocess.TimeoutExpired:
|
||||
proc.kill()
|
||||
Reference in New Issue
Block a user