3v324v23 commited on
Commit
9951756
·
1 Parent(s): 958f779

\Исправлены адреса подключения для прокси и добавлено автоопределение IP контейнера\

Browse files
Files changed (1) hide show
  1. app.py +25 -2
app.py CHANGED
@@ -10,6 +10,7 @@ import http.client
10
  import socketserver
11
  from http.server import HTTPServer, BaseHTTPRequestHandler
12
  import threading
 
13
 
14
  def main():
15
  processes = []
@@ -40,18 +41,31 @@ def main():
40
  api_server_env["LOG_STDOUT"] = "true"
41
  api_server_env["WORKERS_MAX"] = "4" # Устанавливаем значение для WORKERS_MAX
42
  api_server_env["WORKER_QUIT_TIMEOUT_SECONDES"] = "30" # Добавляем timeout для воркеров
 
43
  api_server_process = subprocess.Popen([str(api_binary)], env=api_server_env)
44
  processes.append(api_server_process)
45
 
46
  # Даем время API серверу запуститься
47
  time.sleep(3)
48
 
 
 
 
 
 
 
 
 
 
 
 
49
  # Запускаем Playground UI на порту 3000
50
  print("Starting Playground UI on port 3000...")
51
  playground_env = os.environ.copy()
52
  playground_env["AGENT_SERVER_URL"] = "http://localhost:8080" # Подключаемся к локальному API серверу
53
  playground_env["NODE_ENV"] = "production" # Убедимся, что запускаем в production режиме
54
  playground_env["PORT"] = "3000" # Указываем порт через переменную окружения
 
55
 
56
  # Проверяем наличие standalone режима
57
  standalone_path = playground_dir / ".next" / "standalone" / "server.js"
@@ -73,7 +87,7 @@ def main():
73
  processes.append(playground_process)
74
 
75
  # Даем время Playground UI запуститься
76
- time.sleep(5)
77
 
78
  # Создаем эффективный прокси-сервер
79
  class ProxyHandler(BaseHTTPRequestHandler):
@@ -104,7 +118,7 @@ def main():
104
  def _handle_request(self, method):
105
  try:
106
  # Определяем, какой сервер должен обработать запрос
107
- target_host = 'localhost'
108
 
109
  # API endpoints идут на порт 8080 (API сервер)
110
  if self.path.startswith('/health') or \
@@ -120,6 +134,8 @@ def main():
120
  else:
121
  # Все остальные запросы (включая / и UI assets) идут на порт 3000 (Playground)
122
  target_port = 3000
 
 
123
 
124
  # Пробуем подключиться к целевому серверу
125
  conn = http.client.HTTPConnection(target_host, target_port, timeout=30)
@@ -198,8 +214,15 @@ def main():
198
  <div class="error">
199
  <p><strong>Детали ошибки:</strong> {str(e)}</p>
200
  <p>Целевой порт: {target_port}</p>
 
201
  </div>
202
  <p>Система пытается запустить все компоненты. Попробуйте обновить страницу через минуту.</p>
 
 
 
 
 
 
203
  </body>
204
  </html>
205
  """
 
10
  import socketserver
11
  from http.server import HTTPServer, BaseHTTPRequestHandler
12
  import threading
13
+ import socket
14
 
15
  def main():
16
  processes = []
 
41
  api_server_env["LOG_STDOUT"] = "true"
42
  api_server_env["WORKERS_MAX"] = "4" # Устанавливаем значение для WORKERS_MAX
43
  api_server_env["WORKER_QUIT_TIMEOUT_SECONDES"] = "30" # Добавляем timeout для воркеров
44
+ api_server_env["PORT"] = "8080" # Явно указываем порт
45
  api_server_process = subprocess.Popen([str(api_binary)], env=api_server_env)
46
  processes.append(api_server_process)
47
 
48
  # Даем время API серверу запуститься
49
  time.sleep(3)
50
 
51
+ # Пробуем получить IP-адрес для локальной сети
52
+ container_ip = "127.0.0.1" # По умолчанию
53
+ try:
54
+ # Получаем hostname контейнера
55
+ hostname = socket.gethostname()
56
+ # Получаем IP-адрес по hostname
57
+ container_ip = socket.gethostbyname(hostname)
58
+ print(f"Detected container IP: {container_ip}")
59
+ except Exception as e:
60
+ print(f"Failed to get container IP, using localhost: {e}")
61
+
62
  # Запускаем Playground UI на порту 3000
63
  print("Starting Playground UI on port 3000...")
64
  playground_env = os.environ.copy()
65
  playground_env["AGENT_SERVER_URL"] = "http://localhost:8080" # Подключаемся к локальному API серверу
66
  playground_env["NODE_ENV"] = "production" # Убедимся, что запускаем в production режиме
67
  playground_env["PORT"] = "3000" # Указываем порт через переменную окружения
68
+ playground_env["HOST"] = "0.0.0.0" # Указываем привязку ко всем интерфейсам
69
 
70
  # Проверяем наличие standalone режима
71
  standalone_path = playground_dir / ".next" / "standalone" / "server.js"
 
87
  processes.append(playground_process)
88
 
89
  # Даем время Playground UI запуститься
90
+ time.sleep(10) # Увеличиваем время ожидания
91
 
92
  # Создаем эффективный прокси-сервер
93
  class ProxyHandler(BaseHTTPRequestHandler):
 
118
  def _handle_request(self, method):
119
  try:
120
  # Определяем, какой сервер должен обработать запрос
121
+ target_host = container_ip # Используем IP контейнера вместо localhost
122
 
123
  # API endpoints идут на порт 8080 (API сервер)
124
  if self.path.startswith('/health') or \
 
134
  else:
135
  # Все остальные запросы (включая / и UI assets) идут на порт 3000 (Playground)
136
  target_port = 3000
137
+
138
+ print(f"Proxying {method} {self.path} to {target_host}:{target_port}")
139
 
140
  # Пробуем подключиться к целевому серверу
141
  conn = http.client.HTTPConnection(target_host, target_port, timeout=30)
 
214
  <div class="error">
215
  <p><strong>Детали ошибки:</strong> {str(e)}</p>
216
  <p>Целевой порт: {target_port}</p>
217
+ <p>Целевой хост: {target_host}</p>
218
  </div>
219
  <p>Система пытается запустить все компоненты. Попробуйте обновить страницу через минуту.</p>
220
+ <p>Технические детали:</p>
221
+ <pre>
222
+ Container IP: {container_ip}
223
+ Method: {method}
224
+ Path: {self.path}
225
+ </pre>
226
  </body>
227
  </html>
228
  """