fix(config): update in-memory setting only on env update

This commit is contained in:
InfinityPacer
2024-11-05 00:48:02 +08:00
parent 9e08b9129a
commit 4d3aa0faf3
+8 -4
View File
@@ -360,15 +360,19 @@ class Settings(BaseSettings, ConfigModel):
try: try:
field = self.__fields__[key] field = self.__fields__[key]
original_value = getattr(self, key)
if field.name == "API_TOKEN": if field.name == "API_TOKEN":
converted_value, needs_update = self.validate_api_token(value, getattr(self, key)) converted_value, needs_update = self.validate_api_token(value, original_value)
else: else:
converted_value, needs_update = self.generic_type_converter(value, getattr(self, key), field.type_, converted_value, needs_update = self.generic_type_converter(value, original_value, field.type_,
field.default, key) field.default, key)
# 如果没有抛出异常,则统一使用 converted_value 进行更新 # 如果没有抛出异常,则统一使用 converted_value 进行更新
if needs_update or str(value) != str(converted_value): if needs_update or str(value) != str(converted_value):
setattr(self, key, converted_value) success, message = self.update_env_config(field, original_value, converted_value)
return self.update_env_config(field, value, converted_value) # 仅成功更新配置时,才更新内存
if success:
setattr(self, key, converted_value)
return success, message
return True, "" return True, ""
except Exception as e: except Exception as e:
return False, str(e) return False, str(e)