3v324v23 commited on
Commit
881779c
·
1 Parent(s): 942b4ab

Исправления для fallback.py: добавление файла .env и настройка директорий логов

Browse files
Files changed (1) hide show
  1. fallback.py +100 -4
fallback.py CHANGED
@@ -70,7 +70,56 @@ def create_directory_structure():
70
  AGENTS_DIR.mkdir(exist_ok=True)
71
  RAG_DIR.mkdir(exist_ok=True)
72
  LOG_DIR.mkdir(exist_ok=True)
 
 
 
 
 
 
73
  logger.info(f"Created log directory at {LOG_DIR}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
  def create_basic_config():
76
  """Создание базовых конфигурационных файлов"""
@@ -255,9 +304,6 @@ def create_basic_config():
255
 
256
  def run_api_server():
257
  """Запуск API сервера"""
258
- # Конфигурирование переменных среды
259
- os.environ["AGENT_SERVER_DIRECTORY"] = str(AGENTS_DIR)
260
-
261
  logger.info(f"Starting API server with agents directory: {AGENTS_DIR}")
262
 
263
  # Запуск API сервера напрямую из директории server
@@ -266,12 +312,22 @@ def run_api_server():
266
  logger.error(f"API binary not found at {api_binary}")
267
  raise FileNotFoundError(f"API binary not found at {api_binary}")
268
 
 
 
 
 
 
 
269
  cmd = [str(api_binary)]
270
  logger.info(f"Running command: {' '.join(cmd)}")
 
 
271
 
272
  # Запуск процесса сервера
273
  api_process = subprocess.Popen(
274
  cmd,
 
 
275
  stdout=subprocess.PIPE,
276
  stderr=subprocess.PIPE,
277
  text=True,
@@ -290,7 +346,44 @@ def run_api_server():
290
  time.sleep(2)
291
  if api_process.poll() is not None:
292
  logger.error(f"API server failed to start with exit code {api_process.returncode}")
293
- raise RuntimeError(f"API server failed to start with exit code {api_process.returncode}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
295
  logger.info("API server started successfully")
296
  return api_process
@@ -521,6 +614,9 @@ def main():
521
  # Создание структуры директорий
522
  create_directory_structure()
523
 
 
 
 
524
  # Создание базовых конфигурационных файлов
525
  create_basic_config()
526
 
 
70
  AGENTS_DIR.mkdir(exist_ok=True)
71
  RAG_DIR.mkdir(exist_ok=True)
72
  LOG_DIR.mkdir(exist_ok=True)
73
+
74
+ # Создаем папки, которые ожидает API сервер
75
+ server_log_dir = Path("/tmp/ten_agent/logs")
76
+ server_log_dir.parent.mkdir(exist_ok=True)
77
+ server_log_dir.mkdir(exist_ok=True)
78
+
79
  logger.info(f"Created log directory at {LOG_DIR}")
80
+ logger.info(f"Created server log directory at {server_log_dir}")
81
+
82
+ def create_env_file():
83
+ """Создание файла .env для API сервера"""
84
+ logger.info("Creating .env file...")
85
+
86
+ # Создаем .env файл в директории сервера
87
+ env_path = Path("/app/.env")
88
+ tmp_env_path = Path("/tmp/ten_agent/.env")
89
+
90
+ # Базовое содержимое .env
91
+ env_content = """
92
+ LOG_LEVEL=debug
93
+ LOG_DIR=/tmp/ten_agent/logs
94
+ AGENT_SERVER_DIRECTORY=/tmp/ten_user/agents
95
+ AGENT_SERVER_HOST=0.0.0.0
96
+ AGENT_SERVER_PORT=8080
97
+ PUBLIC_URL=http://localhost:7860
98
+ DISABLE_CAMERA=true
99
+ """
100
+
101
+ # Записываем файл во временную директорию
102
+ with open(tmp_env_path, 'w') as f:
103
+ f.write(env_content)
104
+
105
+ # Пытаемся скопировать в основную директорию (может не сработать из-за прав доступа)
106
+ try:
107
+ with open(env_path, 'w') as f:
108
+ f.write(env_content)
109
+ logger.info(f"Created .env file at {env_path}")
110
+ except Exception as e:
111
+ logger.warning(f"Could not create .env in /app, using temporary one: {e}")
112
+
113
+ logger.info(f"Created .env file at {tmp_env_path}")
114
+
115
+ # Также устанавливаем переменные окружения напрямую
116
+ os.environ["LOG_LEVEL"] = "debug"
117
+ os.environ["LOG_DIR"] = "/tmp/ten_agent/logs"
118
+ os.environ["AGENT_SERVER_DIRECTORY"] = str(AGENTS_DIR)
119
+ os.environ["AGENT_SERVER_HOST"] = "0.0.0.0"
120
+ os.environ["AGENT_SERVER_PORT"] = "8080"
121
+ os.environ["PUBLIC_URL"] = "http://localhost:7860"
122
+ os.environ["DISABLE_CAMERA"] = "true"
123
 
124
  def create_basic_config():
125
  """Создание базовых конфигурационных файлов"""
 
304
 
305
  def run_api_server():
306
  """Запуск API сервера"""
 
 
 
307
  logger.info(f"Starting API server with agents directory: {AGENTS_DIR}")
308
 
309
  # Запуск API сервера напрямую из директории server
 
312
  logger.error(f"API binary not found at {api_binary}")
313
  raise FileNotFoundError(f"API binary not found at {api_binary}")
314
 
315
+ # Настраиваем рабочую директорию и окружение
316
+ work_dir = Path("/app/server")
317
+ env = os.environ.copy()
318
+ env["AGENT_SERVER_DIRECTORY"] = str(AGENTS_DIR)
319
+ env["LOG_DIR"] = "/tmp/ten_agent/logs"
320
+
321
  cmd = [str(api_binary)]
322
  logger.info(f"Running command: {' '.join(cmd)}")
323
+ logger.info(f"With AGENT_SERVER_DIRECTORY={env['AGENT_SERVER_DIRECTORY']}")
324
+ logger.info(f"With LOG_DIR={env['LOG_DIR']}")
325
 
326
  # Запуск процесса сервера
327
  api_process = subprocess.Popen(
328
  cmd,
329
+ cwd=str(work_dir),
330
+ env=env,
331
  stdout=subprocess.PIPE,
332
  stderr=subprocess.PIPE,
333
  text=True,
 
346
  time.sleep(2)
347
  if api_process.poll() is not None:
348
  logger.error(f"API server failed to start with exit code {api_process.returncode}")
349
+ # Если процесс упал, логируем его вывод
350
+ stdout, stderr = api_process.communicate()
351
+ logger.error(f"API stdout: {stdout}")
352
+ logger.error(f"API stderr: {stderr}")
353
+
354
+ # Пробуем запустить с другими аргументами, если первая попытка не удалась
355
+ logger.info("Trying alternative API server launch method...")
356
+ try:
357
+ # Пробуем запустить с помощью wrapper скрипта
358
+ wrapper_script = Path("/app/api_wrapper.py")
359
+ if wrapper_script.exists():
360
+ logger.info("Using api_wrapper.py as fallback")
361
+ env["AGENT_DIR"] = str(AGENTS_DIR)
362
+ wrapper_process = subprocess.Popen(
363
+ ["python3", str(wrapper_script)],
364
+ env=env,
365
+ stdout=subprocess.PIPE,
366
+ stderr=subprocess.PIPE,
367
+ text=True,
368
+ bufsize=1,
369
+ )
370
+
371
+ threading.Thread(target=log_output, args=(wrapper_process.stdout, "WRAPPER"), daemon=True).start()
372
+ threading.Thread(target=log_output, args=(wrapper_process.stderr, "WRAPPER ERROR"), daemon=True).start()
373
+
374
+ time.sleep(2)
375
+ if wrapper_process.poll() is not None:
376
+ logger.error(f"Wrapper script failed with code {wrapper_process.returncode}")
377
+ stdout, stderr = wrapper_process.communicate()
378
+ logger.error(f"Wrapper stdout: {stdout}")
379
+ logger.error(f"Wrapper stderr: {stderr}")
380
+ raise RuntimeError("All API server launch methods failed")
381
+
382
+ logger.info("API server started through wrapper script")
383
+ return wrapper_process
384
+ except Exception as e:
385
+ logger.error(f"Alternative launch method also failed: {e}")
386
+ raise RuntimeError(f"API server failed to start with exit code {api_process.returncode}")
387
 
388
  logger.info("API server started successfully")
389
  return api_process
 
614
  # Создание структуры директорий
615
  create_directory_structure()
616
 
617
+ # Создаем .env файл
618
+ create_env_file()
619
+
620
  # Создание базовых конфигурационных файлов
621
  create_basic_config()
622