Codegeass321 commited on
Commit
455095d
·
1 Parent(s): 7036bcd
Files changed (1) hide show
  1. api.py +40 -0
api.py CHANGED
@@ -97,8 +97,21 @@ async def upload(files: List[UploadFile] = File(...)):
97
 
98
  # Explicitly clear memory before processing new files
99
  logger.info("Clearing previous vector store from memory...")
 
100
  store["value"] = None
 
 
101
  gc.collect()
 
 
 
 
 
 
 
 
 
 
102
  logger.info("Memory cleared.")
103
 
104
  logger.info("Starting document processing...")
@@ -240,3 +253,30 @@ async def status():
240
  logger.info(f"Status response: {status_info}")
241
 
242
  return status_info
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
 
98
  # Explicitly clear memory before processing new files
99
  logger.info("Clearing previous vector store from memory...")
100
+ old_store_had_value = store.get("value") is not None
101
  store["value"] = None
102
+
103
+ # Force garbage collection
104
  gc.collect()
105
+
106
+ # More aggressive memory cleanup if needed
107
+ if old_store_had_value:
108
+ try:
109
+ if hasattr(gc, 'collect'):
110
+ for i in range(3): # Run multiple collection cycles
111
+ gc.collect(i)
112
+ except Exception as e:
113
+ logger.warning(f"Error during aggressive garbage collection: {e}")
114
+
115
  logger.info("Memory cleared.")
116
 
117
  logger.info("Starting document processing...")
 
253
  logger.info(f"Status response: {status_info}")
254
 
255
  return status_info
256
+
257
+ @app.post("/clear")
258
+ async def clear_context():
259
+ """Clear the current document context and free up memory."""
260
+ global store
261
+ logger.info("Clearing document context...")
262
+
263
+ # Clear the store
264
+ if store.get("value") is not None:
265
+ store["value"] = None
266
+
267
+ # Force garbage collection
268
+ gc.collect()
269
+
270
+ # Run a more aggressive memory cleanup
271
+ try:
272
+ if hasattr(gc, 'collect'):
273
+ for i in range(3): # Run multiple collection cycles
274
+ gc.collect(i)
275
+ except Exception as e:
276
+ logger.warning(f"Error during aggressive garbage collection: {e}")
277
+
278
+ logger.info("Document context cleared successfully.")
279
+ return {"status": "success", "message": "Document context cleared successfully."}
280
+ else:
281
+ logger.info("No document context to clear.")
282
+ return {"status": "info", "message": "No document context was loaded."}