Files
eveAI/common/utils/os_utils.py
Josako 1807435339 - Introduction of dynamic Retrievers & Specialists
- Introduction of dynamic Processors
- Introduction of caching system
- Introduction of a better template manager
- Adaptation of ModelVariables to support dynamic Processors / Retrievers / Specialists
- Start adaptation of chat client
2024-11-15 10:00:53 +01:00

47 lines
1.4 KiB
Python

import os
import sys
import gevent
import time
from flask import current_app
def safe_remove(file_path):
try:
if os.path.exists(file_path):
os.remove(file_path)
# Wait for the file to be deleted
start_time = time.time()
while os.path.exists(file_path):
gevent.sleep(1)
if time.time() - start_time > 5: # 5 second timeout
raise TimeoutError(f"Failed to delete {file_path} after 5 seconds")
current_app.logger.info(f"Successfully deleted {file_path}")
else:
current_app.logger.info(f"{file_path} does not exist, skipping deletion")
except Exception as e:
current_app.logger.error(f"Error deleting {file_path}: {str(e)}")
raise
def sync_folder(file_path):
dir_fd = os.open(file_path, os.O_RDONLY)
os.fsync(dir_fd)
os.close(dir_fd)
def get_project_root():
"""Get the root directory of the project."""
# Use the module that's actually running (not this file)
module = sys.modules['__main__']
if hasattr(module, '__file__'):
# Get the path to the main module
main_path = os.path.abspath(module.__file__)
# Get the root directory (where the main module is located)
return os.path.dirname(main_path)
else:
# Fallback: use current working directory
return os.getcwd()