From 48e1bd163df6a879da7e9e50597124410a44d97a Mon Sep 17 00:00:00 2001 From: jlightner Date: Fri, 3 Apr 2026 05:45:51 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Added=20favicon=20(SVG=20+=2032px=20PNG?= =?UTF-8?q?),=20apple-touch-icon,=20OG=20social=20image=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "frontend/public/favicon.svg" - "frontend/public/favicon-32.png" - "frontend/public/apple-touch-icon.png" - "frontend/public/og-image.png" - "frontend/index.html" GSD-Task: S03/T01 --- backend/routers/pipeline.py | 116 +++++++++++++++++---------- frontend/index.html | 12 +++ frontend/public/apple-touch-icon.png | Bin 0 -> 8366 bytes frontend/public/favicon-32.png | Bin 0 -> 624 bytes frontend/public/favicon.svg | 5 ++ frontend/public/og-image.png | Bin 0 -> 51907 bytes 6 files changed, 90 insertions(+), 43 deletions(-) create mode 100644 frontend/public/apple-touch-icon.png create mode 100644 frontend/public/favicon-32.png create mode 100644 frontend/public/favicon.svg create mode 100644 frontend/public/og-image.png diff --git a/backend/routers/pipeline.py b/backend/routers/pipeline.py index 5299739..521da12 100644 --- a/backend/routers/pipeline.py +++ b/backend/routers/pipeline.py @@ -11,6 +11,8 @@ Admin: GET /admin/pipeline/worker-status Active/reserved tasks from Celery inspect """ +import asyncio +import json import logging import uuid from datetime import datetime, timezone @@ -1263,51 +1265,79 @@ async def reindex_all( # ── Admin: Worker status ───────────────────────────────────────────────────── +WORKER_STATUS_CACHE_KEY = "chrysopedia:worker_status" +WORKER_STATUS_CACHE_TTL = 10 # seconds + + +def _inspect_workers(): + """Synchronous Celery inspect — runs in a thread to avoid blocking the event loop.""" + from worker import celery_app + + inspector = celery_app.control.inspect(timeout=0.5) + active = inspector.active() or {} + reserved = inspector.reserved() or {} + stats = inspector.stats() or {} + + workers = [] + for worker_name in set(list(active.keys()) + list(reserved.keys()) + list(stats.keys())): + worker_active = active.get(worker_name, []) + worker_reserved = reserved.get(worker_name, []) + worker_stats = stats.get(worker_name, {}) + + workers.append({ + "name": worker_name, + "active_tasks": [ + { + "id": t.get("id"), + "name": t.get("name"), + "args": t.get("args", []), + "time_start": t.get("time_start"), + } + for t in worker_active + ], + "reserved_tasks": len(worker_reserved), + "total_completed": worker_stats.get("total", {}).get("tasks.pipeline.stages.stage2_segmentation", 0) + + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage3_extraction", 0) + + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage4_classification", 0) + + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage5_synthesis", 0), + "uptime": worker_stats.get("clock", None), + "pool_size": worker_stats.get("pool", {}).get("max-concurrency") if isinstance(worker_stats.get("pool"), dict) else None, + }) + + return {"online": len(workers) > 0, "workers": workers} + + @router.get("/admin/pipeline/worker-status") async def worker_status(): - """Get current Celery worker status — active, reserved, and stats.""" - from worker import celery_app - + """Get current Celery worker status — active, reserved, and stats. + + Results are cached in Redis for 10 seconds to avoid repeated slow + Celery inspect round-trips. The synchronous inspect calls run in a + thread so they never block the async event loop. + """ + # Try Redis cache first try: - inspector = celery_app.control.inspect() - active = inspector.active() or {} - reserved = inspector.reserved() or {} - stats = inspector.stats() or {} - - workers = [] - for worker_name in set(list(active.keys()) + list(reserved.keys()) + list(stats.keys())): - worker_active = active.get(worker_name, []) - worker_reserved = reserved.get(worker_name, []) - worker_stats = stats.get(worker_name, {}) - - workers.append({ - "name": worker_name, - "active_tasks": [ - { - "id": t.get("id"), - "name": t.get("name"), - "args": t.get("args", []), - "time_start": t.get("time_start"), - } - for t in worker_active - ], - "reserved_tasks": len(worker_reserved), - "total_completed": worker_stats.get("total", {}).get("tasks.pipeline.stages.stage2_segmentation", 0) - + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage3_extraction", 0) - + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage4_classification", 0) - + worker_stats.get("total", {}).get("tasks.pipeline.stages.stage5_synthesis", 0), - "uptime": worker_stats.get("clock", None), - "pool_size": worker_stats.get("pool", {}).get("max-concurrency") if isinstance(worker_stats.get("pool"), dict) else None, - }) - - return { - "online": len(workers) > 0, - "workers": workers, - } + redis = await get_redis() + cached = await redis.get(WORKER_STATUS_CACHE_KEY) + await redis.aclose() + if cached: + return json.loads(cached) + except Exception: + pass + + # Cache miss — run synchronous inspect in a thread + try: + result = await asyncio.to_thread(_inspect_workers) except Exception as exc: logger.warning("Failed to inspect Celery workers: %s", exc) - return { - "online": False, - "workers": [], - "error": str(exc), - } + return {"online": False, "workers": [], "error": str(exc)} + + # Write to Redis cache (best-effort) + try: + redis = await get_redis() + await redis.set(WORKER_STATUS_CACHE_KEY, json.dumps(result), ex=WORKER_STATUS_CACHE_TTL) + await redis.aclose() + except Exception: + pass + + return result diff --git a/frontend/index.html b/frontend/index.html index bd904b8..06c6e5e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,6 +4,18 @@ + + + + + + + + + + + + Chrysopedia diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bf88f11fba8111d176064a3639a9f5faf9bc3edd GIT binary patch literal 8366 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 literal 0 HcmV?d00001 diff --git a/frontend/public/favicon-32.png b/frontend/public/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..fe65ca0666918cc3c33ef0a700af335138c48eb4 GIT binary patch literal 624 zcmV-$0+0QPP)3{EWofLjA0);n8s^7!&8()UU@&h;24|ei=>2a0fyvb5|>y+GtzB?c`g?{ z_+~rDd)!)pApyvHeSuk2co(~P>{pmA^ZwmF2hW- zYz1Bteu}rIMJ|uo3RDv=zwt}Ra~bHJWh?NIVEN5I#4GP2myeAFB!J-O*u^r+qYY(E zGUR?C#c!=&0l5nAARk7#8l`@N^yfIY2=YNz%Jk>;eQN`H8q61P^F1sGA_H$IIzP+=+zY>oa z+6(z-l&|Lzj>ivzmWnJs&9jOu-cEPfI6AMC6HUQ3CP{gD&!Aq4kKuSl$EQd zhgYc?-fdI`^u+{Z;xV#u>n@370p!5=%GIox3#bAAyNwr!UxB{?;&tt`Rt+iu0000< KMNUMnLSTaMh8TkY literal 0 HcmV?d00001 diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg new file mode 100644 index 0000000..1701732 --- /dev/null +++ b/frontend/public/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/og-image.png b/frontend/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..12f0dcbd9d45321aa2f63e7011a03ad982eb8965 GIT binary patch literal 51907 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 literal 0 HcmV?d00001