Ragflow源碼:launch_backend_service.sh

流程圖

并行執行
任務執行器0
啟動任務執行器
任務執行器1
...
任務執行器N
RAGFlow服務器
啟動RAGFlow服務器
開始腳本
加載環境變量
取消HTTP代理設置
設置Python路徑和庫
設置默認工作進程數
定義清理函數
等待進程結束
退出時清理

代碼解釋

#!/bin/bash# 如果任何命令返回非零狀態(失敗),立即退出腳本
set -e# 函數:從.env文件加載環境變量
load_env_file() {# 獲取當前腳本所在的目錄路徑local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"local env_file="$script_dir/.env"# 檢查.env文件是否存在if [ -f "$env_file" ]; thenecho "從以下位置加載環境變量: $env_file"# 設置所有變量為環境變量set -asource "$env_file" set +aelseecho "警告: 未找到.env文件: $env_file"fi
}# 加載環境變量
load_env_file# 取消可能由Docker守護進程設置的HTTP代理
export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY=""
# 設置Python模塊搜索路徑
export PYTHONPATH=$(pwd)# 設置動態鏈接庫路徑
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
# 獲取jemalloc庫的路徑
JEMALLOC_PATH=$(pkg-config --variable=libdir jemalloc)/libjemalloc.so# 設置Python解釋器
PY=python3# 如果未設置WS變量或WS小于1,則設置默認工作進程數為1
if [[ -z "$WS" || $WS -lt 1 ]]; thenWS=1
fi# 每個任務執行器和服務器的最大重試次數
MAX_RETRIES=5# 控制終止的標志
STOP=false# 存儲子進程PID的數組
PIDS=()# 設置NLTK數據目錄路徑
export NLTK_DATA="./nltk_data"# 清理函數:處理終止信號
cleanup() {echo "接收到終止信號。正在關閉..."STOP=true# 終止所有子進程for pid in "${PIDS[@]}"; doif kill -0 "$pid" 2>/dev/null; thenecho "正在終止進程 $pid"kill "$pid"fidoneexit 0
}# 捕獲SIGINT和SIGTERM信號,調用cleanup函數
trap cleanup SIGINT SIGTERM# 函數:使用重試邏輯執行task_executor.py
task_exe(){local task_id=$1local retry_count=0while ! $STOP && [ $retry_count -lt $MAX_RETRIES ]; doecho "為任務 $task_id 啟動task_executor.py (嘗試 $((retry_count+1)))"# 使用jemalloc預加載執行Python腳本LD_PRELOAD=$JEMALLOC_PATH $PY rag/svr/task_executor.py "$task_id"EXIT_CODE=$?if [ $EXIT_CODE -eq 0 ]; thenecho "任務 $task_id 的task_executor.py成功退出。"breakelseecho "任務 $task_id 的task_executor.py失敗,退出代碼 $EXIT_CODE。正在重試..." >&2retry_count=$((retry_count + 1))sleep 2fidoneif [ $retry_count -ge $MAX_RETRIES ]; thenecho "任務 $task_id 的task_executor.py在 $MAX_RETRIES 次嘗試后失敗。正在退出..." >&2cleanupfi
}# 函數:使用重試邏輯執行ragflow_server.py
run_server(){local retry_count=0while ! $STOP && [ $retry_count -lt $MAX_RETRIES ]; doecho "啟動ragflow_server.py (嘗試 $((retry_count+1)))"$PY api/ragflow_server.pyEXIT_CODE=$?if [ $EXIT_CODE -eq 0 ]; thenecho "ragflow_server.py成功退出。"breakelseecho "ragflow_server.py失敗,退出代碼 $EXIT_CODE。正在重試..." >&2retry_count=$((retry_count + 1))sleep 2fidoneif [ $retry_count -ge $MAX_RETRIES ]; thenecho "ragflow_server.py在 $MAX_RETRIES 次嘗試后失敗。正在退出..." >&2cleanupfi
}# 啟動任務執行器進程
for ((i=0;i<WS;i++))
dotask_exe "$i" &PIDS+=($!)
done# 啟動主服務器進程
run_server &
PIDS+=($!)# 等待所有后臺進程完成
wait

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86112.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端的跨域問題

前端新手也能看懂的跨域問題詳解 在前端開發中&#xff0c;我們經常會聽到“跨域問題”。尤其是在本地調試前端和后臺接口時&#xff0c;瀏覽器突然拋出一堆報錯信息&#xff0c;比如&#xff1a; Access to XMLHttpRequest at [http://api.xxx.com/data](http://api.xxx.com…

TCP 連接在異常情況下的斷開機制

文章目錄 一、進程(客戶端)被 kill 掉1、kill [-15]2、kill -9 二、進程(客戶端) core 掉 一、進程(客戶端)被 kill 掉 詳細驗證流程 1、kill [-15] 2、kill -9 二、進程(客戶端) core 掉

【甲方安全建設】持續滲透測試(一)

持續滲透測試是一種現代安全方法&#xff0c;它對針對組織數字資產的網絡攻擊進行實時或近實時模擬&#xff0c;確保在漏洞出現時識別并解決漏洞… 文章目錄 行業洞察持續滲透測試不是什么&#xff1f;1. 非單一自動化漏洞掃描2. 非傳統人工滲透測試的替代品3. 非萬能解決方案4…

LOCAL PATTERNS GENERALIZE BETTER FOR NOVEL ANOMALIES

標題&#xff1a;局部模式在新穎異常上的泛化能力更強 原文鏈接&#xff1a;https://openreview.net/forum?id4ua4wyAQLm 源碼鏈接&#xff1a;https://github.com/AllenYLJiang/Local-Patterns-Generalize-Better/ 發表&#xff1a;ICLR-2025 摘要 視頻異常檢測&#xff08;…

ABP vNext + Azure Application Insights:APM 監控與性能診斷最佳實踐

ABP vNext Azure Application Insights&#xff1a;APM 監控與性能診斷最佳實踐 &#x1f680; &#x1f4da; 目錄 ABP vNext Azure Application Insights&#xff1a;APM 監控與性能診斷最佳實踐 &#x1f680;1?? 集成目標與環境要求 2?? 安裝 SDK 與注入服務 3?? 日…

OPENGLPG第九版學習 - 紋理與幀緩存 part1

文章目錄 6.1 紋理綜述6.2 基木紋理類型6.3 創建并初始化紋理代理紋理 6.4 指定紋理數據6.4.1 顯式設置紋理數據將靜態數據載入到紋理對象 6.4.2 從緩存(目標對象GL_PIXEL_UNPACK_BUFFER)中加載紋理6.4.3 從文件加載圖像(DDS為例)讀取一個圖像文件并返回內存中的紋素數據將紋素…

誰來定義未來座艙?新一代車載顯示「C位」之戰開啟

在汽車智能網聯化轉型過程中&#xff0c;車載顯示屏幕作為人車交互的重要載體&#xff0c;已經站上了迅猛發展的新起點。 一方面&#xff0c;伴隨著汽車智能化的加速滲透與發展&#xff0c;傳統中控屏與儀表顯示屏的單一顯示模式已經難以匹配智能化交互需求&#xff0c;車載顯…

基于JavaScript的MQTT實時通信應用開發指南

MQTT 協議入門與實踐&#xff1a;使用 JavaScript 構建實時通信應用 1. 什么是 MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級的 發布/訂閱&#xff08;Pub-Sub&#xff09; 消息協議&#xff0c;專為低帶寬、高延遲或不穩…

React 19中如何向Vue那樣自定義狀態和方法暴露給父組件。

文章目錄 前言一、什么是 useImperativeHandle&#xff1f;1.1 為什么需要 useImperativeHandle&#xff1f;1.2 基本語法 二、useImperativeHandle 的常見用法3.1 暴露自定義方法3.2子組件封裝的彈窗關閉方法暴露給外部 注意點&#xff1a;總結 前言 在 React 的函數組件中&a…

Windows定時關機工具

自己設計了一款簡單易用的windows定時關機工具&#xff0c;使用簡單&#xff0c;使用只需兩步&#xff1a; 1、輸入設定的時間 2、點擊開始計時 Ps: 1、文章頂部直接下載exe文件 2、文件設置不了免費下載&#xff0c;只能用云盤&#xff1a;定時關機工具.exe - 藍奏云。 w…

楓清科技受邀參加2025數據智能大會

近日&#xff0c;由中國通信標準化協會主辦&#xff0c;中國信通院、大數據技術標準推進委員會(CCSA TC601)承辦的“2025數據智能大會”在北京隆重召開&#xff0c;本屆大會以“Data X AI&#xff0c;數據燃動智能”為主題&#xff0c;聚焦央國企數智化轉型、下一代數據治理、數…

黑馬頭條-數據管理平臺

目錄 項目介紹 功能 項目準備 技術 驗證碼 驗證碼登錄 驗證碼登錄-流程 關于token token的介紹 token的使用 個人信息設置 個人信息設置和axios請求攔截器 axios響應攔截器和身份驗證失敗 優化-axios響應結果 發布文章 發布文章-富文本編輯器 發布文章-頻道列…

Pytorch3D 中涉及的知識點匯總

PyTorch3D 是 Facebook&#xff08;現 Meta&#xff09;AI 研究院&#xff08;FAIR&#xff09;推出的一個基于 PyTorch 的三維計算庫&#xff0c;主要用于 3D 計算機視覺與圖形學任務&#xff0c;如 3D 重建、渲染、點云處理、網格操作等。 下面是對 PyTorch3D 中重要涉及知識…

XML在線格式化工具

XML格式化 免費在線XML格式化與壓縮工具&#xff0c;一鍵美化、校驗、壓縮和優化您的XML代碼。支持自定義縮進、節點折疊&#xff0c;提升可讀性&#xff0c;減小文件體積&#xff0c;加速數據傳輸。 https://toolshu.com/xml 本工具是一款專為處理XML&#xff08;可擴展標記…

【軟件系統架構】系列四:嵌入式技術

目錄 一、嵌入式系統組成 (1)嵌入式處理器 (2)支撐硬件 (3)嵌入式操作系統 (4)支撐軟件 (5)應用軟件 二、嵌入式系統特性 三、嵌入式系統分類與分層結構 1.分類 2.嵌入式軟件的五層架構深入解析 (1)硬件層(Hardware Layer) (2)抽象層(Hardware Ab…

監管報送面試回答思路和示例

在銀行監管報送崗位的面試中&#xff0c;回答問題時需要展現出你的專業知識、實際操作經驗、問題解決能力以及對監管合規的重視。以下是對各類問題的回答思路和示例&#xff1a; 一、專業知識類問題 1. 請簡述銀行監管報送的主要類型和報送頻率 回答思路&#xff1a;分類介紹…

音視頻SDK架構演進的實踐與思考

“不是每一行代碼都值得驕傲&#xff0c;但每一次迭代&#xff0c;都是一次更接近極致的嘗試。” 從最初的數千行代碼、到如今跨平臺、全功能、穩定可靠的直播技術基座&#xff0c;大牛直播SDK走過了整整十年。十年&#xff0c;既是時間的刻度&#xff0c;更是技術沉淀與產品信…

vue.config.js配置學習

1.部署應用包時的基本 URL (baseUrl或publicPath) baseUrl在vue-cli 3.3 時棄用了&#xff0c;自此之后使用publicPath 默認&#xff1a;/ module.exports {// baseUrl:"/",publicPath: ./, ) 2.打包時輸出的文件位置&#xff1a;outputDir 默認: dist module.…

大模型——Prompt Design

Prompt Design 為什么未來最重要的寫作,不是寫給人看的,而是寫給AI理解的? 01|一切從一次“客服神操作”開始 前幾天前,我在看一場 YC Demo Day 分享的時候,聽到一個很炸裂的細節: 有個叫 Parahelp 的 AI 客服創業項目,靠一段幾百行的“提示詞”,打敗了市面上大多數…

web布局20

在當下&#xff0c;可用于 Web 布局的 CSS 特性有很多&#xff0c;而且這個集合越來越強大。自從 Flexbox 的兼容性越來越完善&#xff0c;它替代了浮動布局&#xff0c;成為主流的布局技術。只不過&#xff0c;近幾年來&#xff0c;CSS Grid 快速得到主流瀏覽器的支持&#xf…