A newer version of the Gradio SDK is available: 6.13.0
🔍 Debugging Hugging Face Spaces Deployment
Częste Problemy i Rozwiązania
Problem 1: Runtime Error - Exit code: 0
Objawy:
Container logs:
===== Application Startup at 2025-12-13 12:09:26 =====
2025-12-13 13:09:40.467 | INFO | __main__:<module>:161 - 🚀 Starting Gradio app...
[aplikacja się zawiesza]
Przyczyny:
- Podwójny start aplikacji - HF Spaces uruchamia aplikację dwukrotnie podczas budowy kontenera
- Blokada na połączeniu z bazą danych - Próba zapisu do LanceDB bez uprawnień
- Brak API key - Walidacja konfiguracji blokuje inicjalizację
- Timeout - Inicjalizacja trwa zbyt długo (>60s)
Rozwiązania zastosowane w projekcie:
1. Leniwą inicjalizację połączenia z bazą
# ❌ PRZED - blokujące połączenie
vector_store = VectorStoreClient(uri="./lancedb")
vector_store.connect() # Blokuje na HF Spaces!
# ✅ PO - leniwe połączenie
vector_store = VectorStoreClient(uri="./lancedb")
# Połączenie następuje przy pierwszym użyciu
2. Warunkową walidację API key
@field_validator("openai_api_key")
@classmethod
def validate_api_key(cls, v):
v = v or ""
v = v.strip()
if not v:
# Nie rzucaj błędu na HF Spaces
if not os.getenv("SPACE_ID"):
raise ValueError("OPENAI_API_KEY is required")
return v
3. Background thread initialization
def initialize_agent_background():
"""Inicjalizacja agenta w tle bez blokowania startu UI."""
global agent_instance, agent_ready, agent_error
try:
logger.info("🔄 Starting agent initialization in background...")
time.sleep(2) # Unikaj race condition
agent_instance = create_agent()
agent_ready = True
logger.success("✅ A11y Expert Agent is ready!")
except Exception as e:
logger.error(f"❌ Failed to initialize agent: {e}")
agent_error = str(e)
agent_instance = None
# Start w osobnym wątku (daemon)
init_thread = threading.Thread(target=initialize_agent_background, daemon=True)
init_thread.start()
4. Bezpieczne tworzenie katalogów
@property
def db(self):
if self._db is None:
try:
os.makedirs(self.uri, exist_ok=True)
except Exception as e:
logger.warning(f"Could not create directory: {e}")
self._db = lancedb.connect(self.uri)
return self._db
Problem 2: Aplikacja startuje ale nie odpowiada
Przyczyna: Agent nie zainicjalizował się w tle
Rozwiązanie:
- Sprawdź logi w HF Spaces - szukaj
✅ A11y Expert Agent is ready! - Jeśli brak, sprawdź czy nie ma błędu inicjalizacji
- Aplikacja pokazuje status inicjalizacji w interfejsie
Problem 3: Brak dostępu do bazy danych
Przyczyna: Katalog lancedb/ nie jest w repozytorium lub nie jest śledzony przez Git LFS
Rozwiązanie:
# Sprawdź czy lancedb jest w repo
git lfs ls-files | grep lancedb
# Jeśli nie, dodaj do LFS
git lfs track "lancedb/**"
git add .gitattributes lancedb/
git commit -m "Add LanceDB to LFS"
git push
Problem 4: API Key nie jest ustawiony
Objawy:
❌ Failed to initialize agent: OPENAI_API_KEY is required
Rozwiązanie:
- Idź do ustawień swojego Space
- Wybierz zakładkę Settings → Repository secrets
- Dodaj secret
OPENAI_API_KEYz wartością twojego klucza - Zrestartuj Space
Testowanie lokalne przed wdrożeniem
# Test wszystkich komponentów
python test_startup.py
# Test aplikacji Gradio
python app.py
Sprawdzanie logów na HF Spaces
Podczas budowy:
- Kliknij na swój Space
- Przejdź do zakładki Logs
- Szukaj błędów podczas
BuildingiRunning
Podczas działania:
- Logi są na żywo w zakładce Logs
- Szukaj komunikatów ERROR lub stacktrace'ów
Debugowanie z kodem
Dodaj więcej logowania:
import traceback
try:
# twój kod
except Exception as e:
logger.error(f"Error: {e}")
logger.error(traceback.format_exc())
Sprawdź zmienne środowiskowe:
import os
logger.info(f"SPACE_ID: {os.getenv('SPACE_ID')}")
logger.info(f"HF environment: {os.getenv('SYSTEM')}")
Checklist przed wdrożeniem
-
python test_startup.pyprzechodzi bez błędów - Baza danych
lancedb/jest w repo i śledzona przez Git LFS - Secret
OPENAI_API_KEYjest ustawiony w HF Spaces -
README.mdma prawidłową konfigurację YAML na górze -
.gitignorenie blokuje ważnych plików -
requirements.txtzawiera wszystkie zależności
Przydatne komendy
# Sprawdź rozmiar bazy danych
du -sh lancedb/
# Sprawdź pliki LFS
git lfs ls-files
# Wymuś rebuild Space na HF
# (w ustawieniach Space → Factory reboot)
Kontakt i Wsparcie
Jeśli nadal masz problemy:
- Sprawdź pełne logi w zakładce Logs na HF Spaces
- Porównaj z working example na https://huggingface.co/spaces/jacekAI/a11y-expert
- Otwórz issue w repozytorium z pełnymi logami