pink_fox/services/site/rerun.py
Michael Makarochkin f6521b9332 Обновлена среда разработки и добавлен новый функционал в сервер
- Улучшена среда разработки, поправлены косяки старта дебагера

- Добавлен логер в приложение

- Добавлен cli framework
2025-02-28 02:47:17 +03:00

63 lines
2.6 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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)