/
ilyaaaz
/
lab_10
Обзор
Документация
Войти
/
ilyaaaz
/
lab_10
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
start_localstack.py
80 строк
2 KB
ilyaaaz
first commit
24 дек 2025, 16:51
24 дек 2025, 16:51
871e860
Код
Авторство
О чём код?
import subprocess import time import requests import socket def wait_for_localstack(timeout=30): """Ждём пока LocalStack начнёт слушать порт 4566""" print("⏳ Ожидаем запуск LocalStack...") host = "localhost" port = 4566 start = time.time() while time.time() - start < timeout: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: try: sock.connect((host, port)) print("✅ LocalStack запущен (порт 4566 доступен)") return True except ConnectionRefusedError: time.sleep(1) print("❌ LocalStack не запустился вовремя") return False def start_localstack(): """Запуск LocalStack через docker compose""" print("🚀 Запускаем LocalStack...") # Проверяем Docker try: subprocess.run(["docker", "--version"], check=True, capture_output=True) except: print("❌ Docker Desktop не установлен или не запущен") return False print("📦 Запускаем контейнеры LocalStack...") process = subprocess.Popen( ["docker-compose", "up", "-d"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ) stdout, stderr = process.communicate() if process.returncode != 0: print("❌ Ошибка docker-compose:") print(stderr.decode()) return False # Ждём доступности порта if not wait_for_localstack(): return False # Доп. проверка health endpoint try: r = requests.get("http://localhost:4566/_localstack/health") if r.status_code == 200: print("✅ LocalStack готов к работе!") return True except: pass print("⚠️ LocalStack поднялся, но endpoint health не отвечает корректно") return True 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()