Files
Brancheneinstufung2/health_check.py

76 lines
2.6 KiB
Python

import requests
import os
import time
import sys
# --- Configuration ---
# Load credentials from .env
def load_env_manual(path):
"""A simple parser for .env files to remove dependency on python-dotenv."""
if not os.path.exists(path):
print(f"⚠️ Warning: .env file not found at {path}")
return
with open(path) as f:
for line in f:
line = line.strip()
if line and not line.startswith('#') and '=' in line:
key, val = line.split('=', 1)
os.environ.setdefault(key.strip(), val.strip())
load_env_manual('/app/.env')
API_USER = os.getenv("API_USER")
API_PASS = os.getenv("API_PASSWORD")
CE_URL = "http://127.0.0.1:8000"
HEALTH_ENDPOINT = f"{CE_URL}/api/health"
def run_health_check():
"""
Attempts to connect to the Company Explorer API health endpoint.
"""
print("="*60)
print("🩺 Running Company Explorer Health Check...")
print(f" Target: {HEALTH_ENDPOINT}")
print("="*60)
if not API_USER or not API_PASS:
print("❌ FATAL: API_USER or API_PASSWORD not found in environment.")
print(" Please check your .env file.")
return False
try:
print(" Attempting to connect...")
response = requests.get(HEALTH_ENDPOINT, auth=(API_USER, API_PASS), timeout=5)
if response.status_code == 200:
print(" ✅ SUCCESS: Connection successful!")
print(f" Server Response: {response.json()}")
return True
elif response.status_code == 401:
print(" ❌ FAILURE: Connection successful, but Authentication failed (401).")
print(" Please check API_USER and API_PASSWORD in your .env file.")
return False
else:
print(f" ❌ FAILURE: Connected, but received an error status code: {response.status_code}")
print(f" Response: {response.text}")
return False
except requests.exceptions.ConnectionError:
print(" ❌ FATAL: Connection refused.")
print(" Is the Company Explorer container running?")
print(f" Is port 8000 correctly mapped to {CE_URL}?")
return False
except requests.exceptions.Timeout:
print(" ❌ FATAL: Connection timed out.")
print(" The server is not responding. Check for high load or container issues.")
return False
except Exception as e:
print(f" ❌ An unexpected error occurred: {e}")
return False
if __name__ == "__main__":
if run_health_check():
sys.exit(0) # Success
else:
sys.exit(1) # Failure