-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
50 lines (43 loc) · 1.46 KB
/
Copy pathmain.py
File metadata and controls
50 lines (43 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
import shutil
import subprocess
import sys
from loguru import logger
# Путь к корню проекта
project_root = os.path.dirname(os.path.abspath(__file__))
tuna_cmd = "tuna"
if not shutil.which(tuna_cmd):
local_appdata = os.getenv("LOCALAPPDATA")
if local_appdata:
possible_path = os.path.join(local_appdata, "Microsoft", "WindowsApps", "tuna.exe")
if os.path.exists(possible_path):
tuna_cmd = possible_path
# Команды с указанием PYTHONPATH
commands = [
[sys.executable, "bot.py"], # запускает бота и веб-сервер
[
tuna_cmd,
"http",
"3000",
"--subdomain=parsingbot",
], # запускает туннель tuna на порту 3000 с поддоменом parsingbot
]
# Установить PYTHONPATH на корень проекта и настроить PORT
env = os.environ.copy()
env["PYTHONPATH"] = project_root
env["PORT"] = "3000"
processes = []
for cmd in commands:
try:
p = subprocess.Popen(cmd, env=env)
processes.append(p)
except Exception as e:
logger.warning(f"⚠️ Не удалось запустить команду '{cmd[0]}': {e}")
try:
# Ожидаем завершения всех процессов
for p in processes:
p.wait()
except KeyboardInterrupt:
logger.info("Interrupt received, terminating subprocesses...")
for p in processes:
p.terminate()