Răsfoiți Sursa

修复config文件

lxylxy123321 1 săptămână în urmă
părinte
comite
c8e9424c64
2 a modificat fișierele cu 127 adăugiri și 231 ștergeri
  1. 25 1
      backend/app/config.py
  2. 102 230
      result.txt

+ 25 - 1
backend/app/config.py

@@ -3,7 +3,20 @@ from functools import lru_cache
 from pathlib import Path
 
 from pydantic import Field, field_validator
-from pydantic_settings import BaseSettings, SettingsConfigDict
+from pydantic_settings import (
+    BaseSettings,
+    EnvSettingsSource,
+    SettingsConfigDict,
+)
+
+
+class EnvSettingsSourceWithCommaLists(EnvSettingsSource):
+    """Override decode_complex_value to handle comma-separated lists."""
+
+    def decode_complex_value(self, field_name, field, value):
+        if field_name == "backend_cors_origins" and isinstance(value, str):
+            return [v.strip() for v in value.split(",") if v.strip()]
+        return super().decode_complex_value(field_name, field, value)
 
 
 class Settings(BaseSettings):
@@ -14,6 +27,17 @@ class Settings(BaseSettings):
         extra="ignore",
     )
 
+    @classmethod
+    def settings_customise_sources(
+        cls, settings_cls, init_settings, env_settings, dotenv_settings, file_secret_settings
+    ):
+        return (
+            init_settings,
+            EnvSettingsSourceWithCommaLists(settings_cls),
+            dotenv_settings,
+            file_secret_settings,
+        )
+
     # --- 数据路径 ---
     data_dir: Path = Path("/root/Fine-tuning/backend/data")
 

+ 102 - 230
result.txt

@@ -1,230 +1,102 @@
-(finetuning) [root@localhost backend]# IMG="cr.metax-tech.com/public-ai-release/maca/vllm-metax:0.19.0-maca.ai3.5.3.502-torch2.8-py310-ubuntu22.04-amd64" && docker run --rm --device /dev/mxcd --privileged $IMG bash -c "ls /opt/conda/bin 2>/dev/null || ls /root/.conda/envs/*/bin/python3 2>/dev/null || find / -name 'torch' -type d 2>/dev/null | head -5"
-2to3
-2to3-3.10
-__pycache__
-activate
-adig
-ahost
-archspec
-bsdcat
-bsdcpio
-bsdtar
-bsdunzip
-bunzip2
-bzcat
-bzcmp
-bzdiff
-bzegrep
-bzfgrep
-bzgrep
-bzip2
-bzip2recover
-bzless
-bzmore
-c_rehash
-captoinfo
-cbor2
-cjpeg
-clear
-codecov
-coloredlogs
-compile_et
-conda
-conda-env
-conda2solv
-coverage
-coverage-3.10
-coverage3
-cph
-cpuinfo
-curl-config
-datasets-cli
-deactivate
-deep
-derb
-distro
-djpeg
-dotenv
-dumpsolv
-echo_supervisord_conf
-email_validator
-f2py
-fastapi
-flask
-genbrk
-gencfu
-gencnval
-gendict
-generate-supervisor-config
-genrb
-get_gprof
-get_objgraph
-gguf-convert-endian
-gguf-dump
-gguf-editor-gui
-gguf-new-metadata
-gguf-set-metadata
-gss-client
-hf
-httpx
-huggingface-cli
-humanfriendly
-hypercorn
-icu-config
-icuexportdata
-icuinfo
-idle3
-idle3.10
-infocmp
-infotocap
-installcheck
-isympy
-jp.py
-jpegtran
-json-playground
-jsondiff
-jsonpatch
-jsonpointer
-jsonschema
-k5srvutil
-kadmin
-kdestroy
-keyctl
-kinit
-klist
-kpasswd
-krb5-config
-ksu
-kswitch
-ktutil
-kvno
-lmcache
-lmcache_controller
-lmcache_server
-lmcache_v0_server
-lz4
-lz4c
-lz4cat
-lzcat
-lzcmp
-lzdiff
-lzegrep
-lzfgrep
-lzgrep
-lzless
-lzma
-lzmadec
-lzmainfo
-lzmore
-makeconv
-mamba
-mamba-package
-markdown-it
-mc_store_rest_server
-mcoplib_version
-mcp
-mergesolv
-mistral_common
-mooncake_http_metadata_server
-mooncake_master
-ncurses6-config
-ncursesw6-config
-nghttp
-nghttpd
-nghttpx
-ninja
-normalizer
-numba
-openai
-openssl
-pidproxy
-pip
-pip3
-pkgdata
-py.test
-pybase64
-pybind11-config
-pydoc
-pydoc3
-pydoc3.10
-pygmentize
-pytest
-python
-python3
-python3-config
-python3.1
-python3.10
-python3.10-config
-quart
-ray
-rdjpgcom
-repo2solv
-reset
-sclient
-serve
-setuptools-scm
-sim_client
-sqlite3_analyzer
-standard-supervisor
-supervisorctl
-supervisord
-tabs
-tclsh
-tclsh8.6
-testsolv
-tic
-tiny-agents
-tjbench
-toe
-torchfrtrace
-torchrun
-tox
-tput
-tqdm
-transfer_engine_bench
-transfer_engine_topology_dump
-transformers
-transformers-cli
-tset
-tune
-tvm-ffi-config
-tvm-ffi-stubgen
-typer
-undill
-unlz4
-unlzma
-unxz
-unzstd
-uuclient
-uvicorn
-vcs-versioning
-virtualenv
-vllm
-vllm_collect_env
-watchfiles
-websockets
-wheel
-wish
-wish8.6
-wrjpgcom
-x86_64-conda-linux-gnu-ld
-x86_64-conda_cos6-linux-gnu-ld
-xml2-config
-xmlcatalog
-xmllint
-xz
-xzcat
-xzcmp
-xzdec
-xzdiff
-xzegrep
-xzfgrep
-xzgrep
-xzless
-xzmore
-zstd
-zstdcat
-zstdgrep
-zstdless
-zstdmt
-(finetuning) [root@localhost backend]# 
+(base) [root@localhost Fine-tuning]# docker logs finetune-backend 2>&1 | head -100
+Traceback (most recent call last):
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/base.py", line 551, in __call__
+    field_value = self.prepare_field_value(field_name, field, field_value, value_is_complex)
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/providers/env.py", line 134, in prepare_field_value
+    raise e
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/providers/env.py", line 131, in prepare_field_value
+    value = self.decode_complex_value(field_name, field, value)
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/base.py", line 194, in decode_complex_value
+    return json.loads(value)
+  File "/opt/conda/lib/python3.10/json/__init__.py", line 346, in loads
+    return _default_decoder.decode(s)
+  File "/opt/conda/lib/python3.10/json/decoder.py", line 337, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "/opt/conda/lib/python3.10/json/decoder.py", line 355, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/opt/conda/bin/uvicorn", line 8, in <module>
+    sys.exit(main())
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1442, in __call__
+    return self.main(*args, **kwargs)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1363, in main
+    rv = self.invoke(ctx)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1226, in invoke
+    return ctx.invoke(self.callback, **ctx.params)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 794, in invoke
+    return callback(*args, **kwargs)
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/main.py", line 441, in main
+    run(
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/main.py", line 617, in run
+    server.run()
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/server.py", line 75, in run
+    return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/_compat.py", line 60, in asyncio_run
+    return loop.run_until_complete(main)
+  File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_complete
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/server.py", line 79, in serve
+    await self._serve(sockets)
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/server.py", line 86, in _serve
+    config.load()
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/config.py", line 449, in load
+    self.loaded_app = import_from_string(self.app)
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/importer.py", line 19, in import_from_string
+    module = importlib.import_module(module_str)
+  File "/opt/conda/lib/python3.10/importlib/__init__.py", line 126, in import_module
+    return _bootstrap._gcd_import(name[level:], package, level)
+  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
+  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
+  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
+  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
+  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
+  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
+  File "/app/main.py", line 8, in <module>
+    settings = get_settings()
+  File "/app/app/config.py", line 99, in get_settings
+    settings = Settings()
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/main.py", line 247, in __init__
+    super().__init__(**__pydantic_self__.__class__._settings_build_values(sources, init_kwargs))
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/main.py", line 470, in _settings_build_values
+    source_state = source()
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/base.py", line 553, in __call__
+    raise SettingsError(
+pydantic_settings.exceptions.SettingsError: error parsing value for field "backend_cors_origins" from source "EnvSettingsSource"
+Traceback (most recent call last):
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/base.py", line 551, in __call__
+    field_value = self.prepare_field_value(field_name, field, field_value, value_is_complex)
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/providers/env.py", line 134, in prepare_field_value
+    raise e
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/providers/env.py", line 131, in prepare_field_value
+    value = self.decode_complex_value(field_name, field, value)
+  File "/opt/conda/lib/python3.10/site-packages/pydantic_settings/sources/base.py", line 194, in decode_complex_value
+    return json.loads(value)
+  File "/opt/conda/lib/python3.10/json/__init__.py", line 346, in loads
+    return _default_decoder.decode(s)
+  File "/opt/conda/lib/python3.10/json/decoder.py", line 337, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "/opt/conda/lib/python3.10/json/decoder.py", line 355, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/opt/conda/bin/uvicorn", line 8, in <module>
+    sys.exit(main())
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1442, in __call__
+    return self.main(*args, **kwargs)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1363, in main
+    rv = self.invoke(ctx)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 1226, in invoke
+    return ctx.invoke(self.callback, **ctx.params)
+  File "/opt/conda/lib/python3.10/site-packages/click/core.py", line 794, in invoke
+    return callback(*args, **kwargs)
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/main.py", line 441, in main
+    run(
+  File "/opt/conda/lib/python3.10/site-packages/uvicorn/main.py", line 617, in run
+    server.run()
+(base) [root@localhost Fine-tuning]#