-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
52 lines (42 loc) · 1.53 KB
/
main.py
File metadata and controls
52 lines (42 loc) · 1.53 KB
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
import time
import signal
import sys
import uvicorn
from fastapi import FastAPI, Request
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse
from contextlib import asynccontextmanager
from src.core.database import init_database
from src.scheduler.manager import create_scheduler
from src.utils import logger
from src.api.routes import router as api_router
log = logger.get_logger("main")
# Initialize Resources
init_database()
scheduler = create_scheduler()
@asynccontextmanager
async def lifespan(app: FastAPI):
log.info("Sentinal Agent Starting...")
yield
log.info("Shutting down...")
scheduler.shutdown()
app = FastAPI()
app.mount("/static", StaticFiles(directory="ui"), name="static")
templates = Jinja2Templates(directory="ui")
app.include_router(api_router, prefix="/api/v1")
@app.get("/chat", response_class=HTMLResponse)
def chat(request: Request):
return templates.TemplateResponse("chat.html", {"request": request})
@app.get("/settings", response_class=HTMLResponse)
def settings_page(request: Request):
return templates.TemplateResponse("settings.html", {"request": request})
if __name__ == "__main__":
# Handle Ctrl+C gracefully
def signal_handler(sig, frame):
log.info("Signal received, shutting down...")
scheduler.shutdown()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
log.info("Starting API server and Background Scheduler")
uvicorn.run(app, host="0.0.0.0", port=8000)