Spaces:
Building
Building
File size: 1,421 Bytes
e3456a9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
"""
Flare – Spark startup notifier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
App lifecyle içinde Spark servisine /startup çağrısı yapar.
"""
import threading
import time
from typing import Dict, Any
import requests
from utils import log
from config_provider import ConfigProvider, VersionConfig, ProjectConfig
cfg = ConfigProvider.get()
def _select_live_version(p: ProjectConfig) -> VersionConfig | None:
published = [v for v in p.versions if v.published]
if not published:
return None
return max(published, key=lambda v: v.id)
def notify_startup():
spark_url = cfg.global_config.spark_endpoint
for p in cfg.projects:
if not p.enabled:
continue
v = _select_live_version(p)
if not v:
continue
body: Dict[str, Any] = {
"project_name": p.name,
"version_id": v.id,
"general_prompt": v.general_prompt,
"llm": v.llm.model_dump(),
}
try:
log(f"🚀 Notifying Spark /startup for project '{p.name}' …")
r = requests.post(f"{spark_url}/startup", json=body, timeout=10)
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():
t = threading.Thread(target=notify_startup, daemon=True)
t.start()
|