/
Rriri
/
lab10
Обзор
Документация
Войти
/
Rriri
/
lab10
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
start_localstack.py
74 строки
3 KB
jim
initial
29 ноя 2025, 21:46
29 ноя 2025, 21:46
8b01bd4
Код
Авторство
О чём код?
import subprocess import time import requests def start_localstack(): """Запускаем LocalStack через Docker Compose""" print("🚀 Запускаем LocalStack...") # Проверяем, что Docker установлен try: subprocess.run(["docker", "--version"], check=True, capture_output=True) except Exception: print("❌ Docker не установлен! Установите Docker Desktop") return False # Запускаем LocalStack (или убеждаемся, что он уже запущен) try: print("📦 Запускаем контейнеры (или проверяем, что уже запущены)...") process = subprocess.Popen( ["docker-compose", "up", "-d"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ) stdout, stderr = process.communicate() if process.returncode != 0: # Если контейнер уже запущен, docker-compose обычно всё равно возвращает 0, # поэтому сюда попадём только при реальной ошибке print(f"❌ Ошибка запуска: {stderr.decode(errors='ignore')}") return False print("⏳ Ожидаем запуск LocalStack (до 60 секунд)...") health_urls = [ "http://localhost:4566/health", "http://localhost:4566/_localstack/health", ] start_time = time.time() while time.time() - start_time < 60: for url in health_urls: try: resp = requests.get(url) if resp.status_code == 200: print(f"✅ LocalStack успешно запущен! (эндпоинт {url})") # print("Ответ:", resp.text) return True else: print(f"⚠️ {url} вернул статус {resp.status_code}, пробуем дальше...") except requests.exceptions.ConnectionError: print(f"⌛ {url} ещё не отвечает, ждём...") time.sleep(5) print("⚠️ Не удалось подтвердить состояние через HTTP, но контейнер может быть запущен.") print(" Проверьте `docker ps` и при необходимости `curl http://localhost:4566/health` вручную.") return False except Exception as e: print(f"❌ Ошибка: {e}") return False def stop_localstack(): """Останавливаем LocalStack""" print("🛑 Останавливаем LocalStack...") try: subprocess.run(["docker-compose", "down"], check=True) print("✅ LocalStack остановлен") except Exception as e: print(f"❌ Ошибка остановки: {e}") if __name__ == "__main__": start_localstack()