davanstrien HF staff commited on
Commit
136373a
1 Parent(s): 665f955

chore: Initialize collection on startup and refresh data

Browse files
Files changed (1) hide show
  1. main.py +14 -4
main.py CHANGED
@@ -8,7 +8,7 @@ from fastapi import FastAPI, HTTPException, Query
8
  from pydantic import BaseModel
9
  from starlette.responses import RedirectResponse
10
 
11
- from load_data import get_save_path, refresh_data
12
 
13
  # Set up logging
14
  logging.basicConfig(
@@ -22,7 +22,7 @@ cache.setup("mem://?check_interval=10&size=10000")
22
  # Initialize Chroma client
23
  SAVE_PATH = get_save_path()
24
  client = chromadb.PersistentClient(path=SAVE_PATH)
25
- collection = client.get_collection("dataset_cards")
26
 
27
 
28
  class QueryResult(BaseModel):
@@ -36,13 +36,23 @@ class QueryResponse(BaseModel):
36
 
37
  @asynccontextmanager
38
  async def lifespan(app: FastAPI):
39
- # Startup: refresh data
 
40
  logger.info("Starting up the application")
41
  try:
 
 
 
 
 
 
 
 
42
  refresh_data()
43
  logger.info("Data refresh completed successfully")
44
  except Exception as e:
45
- logger.error(f"Error during data refresh: {str(e)}")
 
46
 
47
  yield # Here the app is running and handling requests
48
 
 
8
  from pydantic import BaseModel
9
  from starlette.responses import RedirectResponse
10
 
11
+ from load_data import get_embedding_function, get_save_path, refresh_data
12
 
13
  # Set up logging
14
  logging.basicConfig(
 
22
  # Initialize Chroma client
23
  SAVE_PATH = get_save_path()
24
  client = chromadb.PersistentClient(path=SAVE_PATH)
25
+ collection = None
26
 
27
 
28
  class QueryResult(BaseModel):
 
36
 
37
  @asynccontextmanager
38
  async def lifespan(app: FastAPI):
39
+ global collection
40
+ # Startup: refresh data and initialize collection
41
  logger.info("Starting up the application")
42
  try:
43
+ # Create or get the collection
44
+ embedding_function = get_embedding_function()
45
+ collection = client.get_or_create_collection(
46
+ name="dataset_cards", embedding_function=embedding_function
47
+ )
48
+ logger.info("Collection initialized successfully")
49
+
50
+ # Refresh data
51
  refresh_data()
52
  logger.info("Data refresh completed successfully")
53
  except Exception as e:
54
+ logger.error(f"Error during startup: {str(e)}")
55
+ raise
56
 
57
  yield # Here the app is running and handling requests
58