Rulga commited on
Commit
d40917b
·
1 Parent(s): f2dcec0

Refactor startup logic in app.py to prioritize knowledge base rebuild; implement fallback loading for existing base on failure

Browse files
Files changed (1) hide show
  1. app.py +24 -15
app.py CHANGED
@@ -298,21 +298,30 @@ vector_store = None
298
  @app.on_event("startup")
299
  async def startup_event():
300
  global vector_store
301
-
302
- # Только загружаем существующую базу при старте, не создаем новую
303
- if os.path.exists(os.path.join(VECTOR_STORE_PATH, "index.faiss")):
304
- try:
305
- vector_store = FAISS.load_local(
306
- VECTOR_STORE_PATH,
307
- embeddings,
308
- allow_dangerous_deserialization=True
309
- )
310
- logger.info("Successfully loaded existing knowledge base")
311
- except Exception as e:
312
- logger.warning(f"Could not load existing knowledge base: {str(e)}")
313
- vector_store = None
314
- else:
315
- logger.warning("No existing knowledge base found, please use /rebuild-kb endpoint to create one")
 
 
 
 
 
 
 
 
 
316
 
317
  # API endpoints
318
  @app.post("/chat", response_model=ChatResponse)
 
298
  @app.on_event("startup")
299
  async def startup_event():
300
  global vector_store
301
+ try:
302
+ # Намеренно вызываем ошибку деления на ноль для рестарта
303
+ 1/0
304
+ except:
305
+ pass
306
+
307
+ try:
308
+ # Сразу запускаем полную пересборку базы знаний
309
+ vector_store = await build_knowledge_base_async(embeddings, force_rebuild=True)
310
+ logger.info("Successfully rebuilt knowledge base on startup")
311
+ except Exception as e:
312
+ logger.error(f"Failed to rebuild knowledge base on startup: {str(e)}")
313
+ # Пробуем загрузить существующую базу как fallback
314
+ if os.path.exists(os.path.join(VECTOR_STORE_PATH, "index.faiss")):
315
+ try:
316
+ vector_store = FAISS.load_local(
317
+ VECTOR_STORE_PATH,
318
+ embeddings,
319
+ allow_dangerous_deserialization=True
320
+ )
321
+ logger.info("Loaded existing knowledge base as fallback")
322
+ except Exception as load_error:
323
+ logger.error(f"Could not load existing knowledge base: {str(load_error)}")
324
+ vector_store = None
325
 
326
  # API endpoints
327
  @app.post("/chat", response_model=ChatResponse)