mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-01 18:21:30 +08:00
Add a complete example demonstrating dirty workers with sentence-transformers for text embeddings via FastAPI: - EmbeddingApp DirtyApp that loads and manages the ML model - FastAPI endpoints for /embed and /health - Docker and docker-compose configuration - Integration tests with numpy similarity checks - GitHub Actions CI workflow
30 lines
617 B
Python
30 lines
617 B
Python
from fastapi import FastAPI
|
|
from pydantic import BaseModel
|
|
from gunicorn.dirty.client import get_dirty_client
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
class EmbedRequest(BaseModel):
|
|
texts: list[str]
|
|
|
|
|
|
class EmbedResponse(BaseModel):
|
|
embeddings: list[list[float]]
|
|
|
|
|
|
@app.post("/embed", response_model=EmbedResponse)
|
|
async def embed(request: EmbedRequest):
|
|
client = get_dirty_client()
|
|
result = client.execute(
|
|
"embedding_service.embedding_app:EmbeddingApp",
|
|
"embed",
|
|
request.texts
|
|
)
|
|
return EmbedResponse(embeddings=result)
|
|
|
|
|
|
@app.get("/health")
|
|
async def health():
|
|
return {"status": "ok"}
|