streamlit fix

This commit is contained in:
2025-09-01 18:57:39 +03:00
parent 456e9935f0
commit 47a7344755
39 changed files with 491 additions and 555 deletions

185
check_services.py Normal file
View File

@@ -0,0 +1,185 @@
#!/usr/bin/env python3
"""
Скрипт для быстрой диагностики всех сервисов NIN Excel Parsers
"""
import requests
import subprocess
import sys
from pathlib import Path
def check_port(port, service_name):
"""Проверка доступности порта"""
try:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('localhost', port))
sock.close()
if result == 0:
print(f"✅ Порт {port} ({service_name}) - ОТКРЫТ")
return True
else:
print(f"❌ Порт {port} ({service_name}) - ЗАКРЫТ")
return False
except Exception as e:
print(f"❌ Ошибка проверки порта {port}: {e}")
return False
def check_service(url, service_name):
"""Проверка доступности HTTP сервиса"""
try:
response = requests.get(url, timeout=3)
if response.status_code == 200:
print(f"{service_name} ({url}) - ДОСТУПЕН")
return True
else:
print(f"⚠️ {service_name} ({url}) - ОТВЕЧАЕТ, но статус {response.status_code}")
return True
except requests.exceptions.ConnectionError:
print(f"{service_name} ({url}) - НЕ ДОСТУПЕН (Connection Error)")
return False
except requests.exceptions.Timeout:
print(f"⚠️ {service_name} ({url}) - ТАЙМАУТ")
return False
except Exception as e:
print(f"{service_name} ({url}) - ОШИБКА: {e}")
return False
def check_docker():
"""Проверка Docker"""
try:
result = subprocess.run(["docker", "--version"], capture_output=True, text=True)
if result.returncode == 0:
print(f"✅ Docker: {result.stdout.strip()}")
return True
else:
print("❌ Docker не работает")
return False
except FileNotFoundError:
print("❌ Docker не установлен")
return False
except Exception as e:
print(f"❌ Ошибка проверки Docker: {e}")
return False
def check_docker_containers():
"""Проверка Docker контейнеров"""
try:
result = subprocess.run(["docker", "ps"], capture_output=True, text=True)
if result.returncode == 0:
if "minio" in result.stdout.lower():
print("✅ MinIO контейнер запущен")
return True
else:
print("⚠️ MinIO контейнер не найден")
return False
else:
print("Не удалось проверить Docker контейнеры")
return False
except Exception as e:
print(f"❌ Ошибка проверки контейнеров: {e}")
return False
def check_python_packages():
"""Проверка Python пакетов"""
required_packages = ['fastapi', 'streamlit', 'pandas', 'minio', 'uvicorn']
missing_packages = []
print("\n🔍 Проверка Python пакетов:")
for package in required_packages:
try:
__import__(package)
print(f"{package}")
except ImportError:
print(f"{package}")
missing_packages.append(package)
if missing_packages:
print(f"\n⚠️ Отсутствуют пакеты: {', '.join(missing_packages)}")
print("Установите: pip install -r requirements.txt")
return False
return True
def main():
"""Основная функция диагностики"""
print("🔍 ДИАГНОСТИКА NIN Excel Parsers API")
print("=" * 50)
# Проверка Python пакетов
packages_ok = check_python_packages()
print("\n🔍 Проверка Docker:")
docker_ok = check_docker()
if docker_ok:
containers_ok = check_docker_containers()
else:
containers_ok = False
print("\n🔍 Проверка портов:")
port_8000_ok = check_port(8000, "FastAPI")
port_8501_ok = check_port(8501, "Streamlit")
port_9000_ok = check_port(9000, "MinIO API")
port_9001_ok = check_port(9001, "MinIO Console")
print("\n🔍 Проверка HTTP сервисов:")
fastapi_ok = check_service("http://localhost:8000/", "FastAPI")
streamlit_ok = check_service("http://localhost:8501/", "Streamlit")
minio_console_ok = check_service("http://localhost:9001/", "MinIO Console")
print("\n" + "=" * 50)
print("📊 РЕЗУЛЬТАТЫ ДИАГНОСТИКИ:")
print("=" * 50)
# Подсчет результатов
total_checks = 8
passed_checks = sum([
packages_ok,
docker_ok,
containers_ok,
port_8000_ok,
port_8501_ok,
port_9000_ok,
port_9001_ok,
fastapi_ok
])
print(f"✅ Пройдено: {passed_checks}/{total_checks}")
if passed_checks == total_checks:
print("\n🎉 Все сервисы работают корректно!")
print("📍 Доступные URL:")
print(" • Streamlit: http://localhost:8501")
print(" • FastAPI: http://localhost:8000")
print(" • API Docs: http://localhost:8000/docs")
print(" • MinIO: http://localhost:9001")
else:
print(f"\n⚠️ Проблемы обнаружены в {total_checks - passed_checks} сервисах")
if not packages_ok:
print("\n🔧 РЕШЕНИЕ: Установите зависимости")
print("pip install -r requirements.txt")
if not docker_ok:
print("\n🔧 РЕШЕНИЕ: Запустите Docker Desktop")
if not containers_ok:
print("\n🔧 РЕШЕНИЕ: Запустите MinIO")
print("docker-compose up -d minio")
if not port_8000_ok:
print("\n🔧 РЕШЕНИЕ: Запустите FastAPI сервер")
print("python run_dev.py")
if not port_8501_ok:
print("\n🔧 РЕШЕНИЕ: Запустите Streamlit")
print("python run_streamlit.py")
print("\n🚀 Для автоматического запуска используйте:")
print("python start_demo.py")
print("\n🔍 Для пошагового запуска используйте:")
print("python run_manual.py")
if __name__ == "__main__":
main()