mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-10 13:45:44 +08:00
Fix: /file2document/convert blocks event loop on large folders causing 504 timeout (#13784)
Problem The /file2document/convert endpoint ran all file lookups, document deletions, and insertions synchronously inside the request cycle. Linking a large folder (~1.7GB with many files) caused 504 Gateway Timeout because the blocking DB loop held the HTTP connection open for too long. Fix - Extracted the heavy DB work into a plain sync function _convert_files - Inputs are validated and folder file IDs expanded upfront (fast path) - The blocking work is dispatched to a thread pool via get_running_loop().run_in_executor() and the endpoint returns 200 immediately - Frontend only checks data.code === 0 so the response change (file2documents list → True) has no impact Fixes #13781 --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
e705ac6643
commit
ff92b5575b
@@ -13,12 +13,23 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
from common.constants import LLMType
|
||||
from api.db.services.tenant_llm_service import TenantLLMService
|
||||
|
||||
_KEY_TO_MODEL_TYPE = {
|
||||
"llm_id": LLMType.CHAT,
|
||||
"embd_id": LLMType.EMBEDDING,
|
||||
"asr_id": LLMType.SPEECH2TEXT,
|
||||
"img2txt_id": LLMType.IMAGE2TEXT,
|
||||
"rerank_id": LLMType.RERANK,
|
||||
"tts_id": LLMType.TTS,
|
||||
}
|
||||
|
||||
def ensure_tenant_model_id_for_params(tenant_id: str, param_dict: dict) -> dict:
|
||||
for key in ["llm_id", "embd_id", "asr_id", "img2txt_id", "rerank_id", "tts_id"]:
|
||||
if param_dict.get(key) and not param_dict.get(f"tenant_{key}"):
|
||||
tenant_model = TenantLLMService.get_api_key(tenant_id, param_dict[key])
|
||||
model_type = _KEY_TO_MODEL_TYPE.get(key)
|
||||
tenant_model = TenantLLMService.get_api_key(tenant_id, param_dict[key], model_type)
|
||||
if tenant_model:
|
||||
param_dict.update({f"tenant_{key}": tenant_model.id})
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user