Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -38,6 +38,22 @@ import json
|
|
38 |
import yaml
|
39 |
from slugify import slugify
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
sys.path.insert(0, "ai-toolkit")
|
42 |
from toolkit.job import get_job
|
43 |
|
@@ -77,6 +93,24 @@ app.add_middleware(
|
|
77 |
def health_check():
|
78 |
return {"status": "✅ FastAPI running on Hugging Face Spaces!"}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
REPO_ID = "rahul7star/ohamlab"
|
81 |
FOLDER = "demo"
|
82 |
BASE_URL = f"https://huggingface.co/{REPO_ID}/resolve/main/"
|
|
|
38 |
import yaml
|
39 |
from slugify import slugify
|
40 |
|
41 |
+
from collections import deque
|
42 |
+
|
43 |
+
log_buffer = deque(maxlen=1000)
|
44 |
+
|
45 |
+
class InMemoryLogHandler(logging.Handler):
|
46 |
+
def emit(self, record):
|
47 |
+
msg = self.format(record)
|
48 |
+
log_buffer.append(msg)
|
49 |
+
|
50 |
+
# Setup logging to buffer
|
51 |
+
handler = InMemoryLogHandler()
|
52 |
+
handler.setFormatter(logging.Formatter("%(asctime)s | %(levelname)s | %(message)s"))
|
53 |
+
logging.getLogger().addHandler(handler)
|
54 |
+
|
55 |
+
|
56 |
+
|
57 |
sys.path.insert(0, "ai-toolkit")
|
58 |
from toolkit.job import get_job
|
59 |
|
|
|
93 |
def health_check():
|
94 |
return {"status": "✅ FastAPI running on Hugging Face Spaces!"}
|
95 |
|
96 |
+
|
97 |
+
|
98 |
+
|
99 |
+
|
100 |
+
@app.get("/jobs")
|
101 |
+
def all_jobs():
|
102 |
+
return list(JOB_QUEUE.values())
|
103 |
+
|
104 |
+
|
105 |
+
@app.get("/logs")
|
106 |
+
def get_logs(limit: int = 50):
|
107 |
+
return list(log_buffer)[-limit:]
|
108 |
+
|
109 |
+
@app.get("/jobs/running")
|
110 |
+
def running_jobs():
|
111 |
+
return [job for job in JOB_QUEUE.values() if job.status in ("pending", "running")]
|
112 |
+
|
113 |
+
|
114 |
REPO_ID = "rahul7star/ohamlab"
|
115 |
FOLDER = "demo"
|
116 |
BASE_URL = f"https://huggingface.co/{REPO_ID}/resolve/main/"
|