- Улучшена среда разработки, поправлены косяки старта дебагера - Добавлен логер в приложение - Добавлен cli framework
63 lines
2.6 KiB
Python
Executable File
63 lines
2.6 KiB
Python
Executable File
#!/bin/python3
|
||
|
||
import requests
|
||
import time
|
||
import subprocess
|
||
import sys
|
||
import os
|
||
|
||
file_out = "out.log"
|
||
file_err = "err.log"
|
||
url_ping = "http://localhost:12001/ping"
|
||
|
||
# Останавливаем контейнер без задержки
|
||
subprocess.run(["docker", "compose", "stop", "site", "-t", "0"])
|
||
|
||
# Устанавливаем переменные окружения в зависимости от передачи аргумента
|
||
env = os.environ.copy()
|
||
if len(sys.argv) > 1 and sys.argv[1] == "debug":
|
||
env["ARG1"] = "debug"
|
||
|
||
# Запускаем сервис через Docker compose
|
||
subprocess.run(["docker", "compose", "up", "site", "-d", "--build"], env=env)
|
||
|
||
attempt_count = 0
|
||
|
||
while True:
|
||
try:
|
||
# Отправляем запрос для проверки поднялся ли HTTP сервер
|
||
response = requests.get(url_ping, timeout=5)
|
||
if response.status_code == 200:
|
||
print("Сервер запущен")
|
||
break
|
||
except requests.ConnectionError:
|
||
# смотрим есть ли ошибки в err.log
|
||
try:
|
||
with open(file_err, 'r') as ferr:
|
||
err_content = ferr.read().strip()
|
||
if err_content:
|
||
print("Имеется ошибка компиляции или запуска, смотри файл " + file_err)
|
||
exit(1)
|
||
except FileNotFoundError:
|
||
print("Лог файл" + file_err + " не найден, проверьте путь")
|
||
print("Текущая директория" + os.getcwd())
|
||
|
||
# смотрим есть ли запись о старте дебагера
|
||
try:
|
||
with open(file_out, 'r') as file:
|
||
content = file.read().strip()
|
||
if content:
|
||
# Лог файл не пуст, возможно запущен дебагер и ping дожидаться не стоит
|
||
if content.startswith("API server listening at: [::]:2345"):
|
||
# Лог файл начинается с сообщения о старте дебагера, ошибок нет
|
||
break
|
||
except FileNotFoundError:
|
||
print("Лог файл " + file_out + " не найден, проверьте путь")
|
||
print("Текущая директория" + os.getcwd())
|
||
|
||
# Если не удалось подключиться или не обнаружен старт дебагера то увеличиваем счетчик попыток
|
||
attempt_count += 1
|
||
print(f"Ждем... ({attempt_count})")
|
||
|
||
time.sleep(1)
|