File size: 1,640 Bytes
a52c5c7
 
 
 
 
 
 
d2100e7
 
a52c5c7
 
 
 
 
 
 
d2100e7
 
 
a52c5c7
 
 
d2100e7
 
 
a52c5c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d2100e7
a52c5c7
 
 
 
 
 
 
 
 
 
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
53
54
55
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
from contextlib import asynccontextmanager

from router import llamindex_router
from router import embedding_router
from router import image_embedding_router
from core.cronjob import news_scheduler

@asynccontextmanager
async def lifespan_manager(app: FastAPI):
    """
    μ„œλ²„ μ‹œμž‘ μ‹œ λͺ¨λΈμ„ λ‘œλ“œν•˜κ³  μ’…λ£Œ μ‹œ μ •λ¦¬ν•©λ‹ˆλ‹€.
    """
    
    # μŠ€μΌ€μ€„λŸ¬ μ‹œμž‘
    #news_scheduler.start()
    
    # μ„œλ²„κ°€ μš”μ²­ 처리λ₯Ό μ‹œμž‘ν•˜λ„λ‘ μ œμ–΄κΆŒμ„ λ„˜κ²¨μ€λ‹ˆλ‹€.
    yield 
    
    # μŠ€μΌ€μ€„λŸ¬ μ’…λ£Œ
    #news_scheduler.shutdown()
    
# FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ΄ˆκΈ°ν™”
app = FastAPI(
    title="RAG+LLM",
    description="RAG+LLM ",
    lifespan=lifespan_manager 
)

# CORS μ„€μ • (λͺ¨λ“  도메인 ν—ˆμš©)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(llamindex_router.router, prefix="/llama_index")
app.include_router(embedding_router.router, prefix="/embedding")
app.include_router(image_embedding_router.router, prefix="/image_embedding")

# ν—¬μŠ€ 체크용 κΈ°λ³Έ μ—”λ“œν¬μΈνŠΈ
@app.get("/", summary="API ν—¬μŠ€ 체크")
def read_root():
    """API μ„œλ²„κ°€ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€."""
    return {"message": "RAG+LLM API is running successfully."}

if __name__ == "__main__":
    # --reload μ˜΅μ…˜μ„ μΆ”κ°€ν•˜μ—¬ μ½”λ“œκ°€ 변경될 λ•Œλ§ˆλ‹€ μžλ™ μž¬μ‹œμž‘λ˜κ²Œ μ„€μ •ν•©λ‹ˆλ‹€.
    uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True)