目錄
- 介紹
- 1. 初始化和配置
- 2. 數據庫管理
- 3. 核心功能
- 4. HTTP 服務
- 5. 信號處理
- 6. 調試支持
- 流程圖
- 系統架構
- 代碼解釋
- 1. **初始化系統**
- 2. **運行時控制**
- 3. **核心服務**
介紹
ragflow_server.py
是 RAGFlow 項目的主服務器程序,負責啟動和管理 RAGFlow 的核心服務。以下是它的主要功能和作用:
1. 初始化和配置
- 日志初始化:使用
initRootLogger
初始化根日志記錄器 - 版本顯示:打印 RAGFlow 的 ASCII 藝術標志和版本信息
- 配置加載:
- 加載 API 設置 (
settings.init_settings()
) - 打印 RAG 相關配置 (
print_rag_settings()
) - 支持調試模式 (
RAGFLOW_DEBUGPY_LISTEN
環境變量)
- 加載 API 設置 (
2. 數據庫管理
- 數據庫初始化:
init_web_db()
初始化 Web 數據庫表init_web_data()
初始化基礎數據
- 運行時配置:通過
RuntimeConfig
類管理運行時配置
3. 核心功能
- 文檔進度更新:
- 啟動后臺線程 (
update_progress
) 定期更新文檔處理進度 - 使用 Redis 分布式鎖確保線程安全
- 啟動后臺線程 (
- 插件管理:通過
GlobalPluginManager.load_plugins()
加載插件
4. HTTP 服務
- Web 服務啟動:
- 使用 Werkzeug 的
run_simple
啟動 HTTP 服務器 - 支持多線程和調試模式
- 監聽指定的主機 IP 和端口
- 使用 Werkzeug 的
5. 信號處理
- 注冊信號處理器 (
signal_handler
) 用于優雅關閉 - 處理 SIGINT (Ctrl+C) 和 SIGTERM 信號
6. 調試支持
- 支持通過
debugpy
進行遠程調試 - 可通過
--debug
參數啟用調試模式
流程圖
系統架構
代碼解釋
1. 初始化系統
# 日志初始化(結構化日志記錄)
initRootLogger("ragflow_server") # 創建根日志器,輸出到文件和控制臺# 配置加載(分層配置體系)
settings.init_settings() # 加載api/settings.py基礎配置
print_rag_settings() # 打印rag/settings.py的RAG專用配置
show_configs() # 顯示當前運行環境配置# 數據庫初始化(ORM遷移+基礎數據)
init_web_db() # 創建所有數據庫表結構
init_web_data() # 初始化管理員賬號等基礎數據
2. 運行時控制
# 命令行參數解析
parser = argparse.ArgumentParser()
parser.add_argument("--debug", action="store_true") # 調試模式開關
args = parser.parse_args()# 運行時配置(動態環境變量)
RuntimeConfig.init_env() # 加載環境變量
RuntimeConfig.init_config( # 初始化核心參數JOB_SERVER_HOST=settings.HOST_IP,HTTP_PORT=settings.HOST_PORT
)
3. 核心服務
# 文檔進度更新服務(分布式鎖保障)
def update_progress():redis_lock = RedisDistributedLock("update_progress", timeout=60)while not stop_event.is_set():try:if redis_lock.acquire(): # 獲取Redis分布式鎖DocumentService.update_progress() # 批量更新文檔處理狀態stop_event.wait(6) # 每6秒執行一次finally:redis_lock.release() # 確保鎖釋放# HTTP服務(Werkzeug增強服務器)
run_simple(hostname=settings.HOST_IP, # 支持0.0.0.0監聽port=settings.HOST_PORT,application=app, # Flask應用對象threaded=True, # 多線程模式use_reloader=RuntimeConfig.DEBUG # 調試時自動重載
)