Spaces:
Paused
Paused
| """ | |
| Flare – Spark startup notifier | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| Projeler açılırken Spark’a /startup çağrısı yapar. | |
| """ | |
| from __future__ import annotations | |
| import threading, requests | |
| from typing import Dict, Any | |
| from utils import log | |
| from config_provider import ConfigProvider, ProjectConfig, VersionConfig | |
| import os | |
| cfg = ConfigProvider.get() | |
| def _select_live_version(p: ProjectConfig) -> VersionConfig | None: | |
| """Yayınlanmış en güncel versiyonu getir.""" | |
| published = [v for v in p.versions if v.published] | |
| return max(published, key=lambda v: v.id) if published else None | |
| def notify_startup(): | |
| spark_base = str(cfg.global_config.spark_endpoint).rstrip("/") | |
| for p in cfg.projects: | |
| if not p.enabled: | |
| continue | |
| v = _select_live_version(p) | |
| if not v: | |
| continue | |
| plain = cfg.global_config.get_plain_token() | |
| log(f"🔑 Cloud-token starts with {plain[:6]}… (len={len(plain)})") | |
| body: Dict[str, Any] = { | |
| # ----- zorunlu alanlar ----- | |
| "work_mode": cfg.global_config.work_mode, | |
| "cloud_token": plain, | |
| "project_name": p.name, | |
| "project_version": v.id, | |
| "repo_id": v.llm.repo_id, | |
| "generation_config": v.llm.generation_config, | |
| "use_fine_tune": v.llm.use_fine_tune, | |
| "fine_tune_zip": v.llm.fine_tune_zip, | |
| } | |
| # Hugging Face token'ı ortam değişkeninden al | |
| spark_token = os.getenv("SPARK_TOKEN") | |
| if not spark_token: | |
| log("❌ SPARK_TOKEN environment variable is missing.") | |
| return | |
| headers = { | |
| "Authorization": f"Bearer {spark_token}", | |
| "Content-Type": "application/json" | |
| } | |
| try: | |
| log(f"🚀 Notifying Spark /startup for project '{p.name}' …") | |
| r = requests.post(f"{spark_base}/startup", json=body, headers=headers, timeout=10) | |
| if r.status_code >= 400: | |
| log(f"❌ Spark responded {r.status_code}: {r.text}") | |
| r.raise_for_status() | |
| log(f"✅ Spark acknowledged startup ({r.status_code})") | |
| except Exception as e: | |
| log(f"⚠️ Spark startup failed: {e}") | |
| def run_in_thread(): | |
| threading.Thread(target=notify_startup, daemon=True).start() | |