Spaces:
Running
Running
Commit
·
1c1ca6d
1
Parent(s):
f1b3987
Enhance lifespan management in FastAPI by initializing PoetryGenerationService and handling model preloading asynchronously
Browse files
main.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
from contextlib import asynccontextmanager
|
| 2 |
from fastapi import FastAPI
|
| 3 |
from app.api.endpoints.poetry import router as poetry_router
|
|
@@ -37,13 +38,21 @@ def init_huggingface():
|
|
| 37 |
|
| 38 |
@asynccontextmanager
|
| 39 |
async def lifespan(app: FastAPI):
|
| 40 |
-
#
|
| 41 |
-
poetry_service = PoetryGenerationService()
|
| 42 |
-
await poetry_service.preload_models()
|
| 43 |
init_huggingface()
|
| 44 |
-
|
| 45 |
-
#
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
app = FastAPI(lifespan=lifespan)
|
| 49 |
app.include_router(poetry_router, prefix="/api/v1/poetry")
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
from contextlib import asynccontextmanager
|
| 3 |
from fastapi import FastAPI
|
| 4 |
from app.api.endpoints.poetry import router as poetry_router
|
|
|
|
| 38 |
|
| 39 |
@asynccontextmanager
|
| 40 |
async def lifespan(app: FastAPI):
|
| 41 |
+
# Initialize Hugging Face authentication first
|
|
|
|
|
|
|
| 42 |
init_huggingface()
|
| 43 |
+
|
| 44 |
+
# Initialize poetry service and preload models
|
| 45 |
+
poetry_service = PoetryGenerationService()
|
| 46 |
+
|
| 47 |
+
# Only await if `preload_models` is asynchronous
|
| 48 |
+
if callable(getattr(poetry_service, "preload_models", None)):
|
| 49 |
+
result = poetry_service.preload_models()
|
| 50 |
+
if asyncio.iscoroutine(result):
|
| 51 |
+
await result
|
| 52 |
+
else:
|
| 53 |
+
result() # Call directly if synchronous
|
| 54 |
+
|
| 55 |
+
yield # Continue to application startup
|
| 56 |
|
| 57 |
app = FastAPI(lifespan=lifespan)
|
| 58 |
app.include_router(poetry_router, prefix="/api/v1/poetry")
|