mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-28 08:08:32 +00:00
Merge pull request #4593 from StarryKira/fix/image-storage-env-unreachable
fix: 异步生图开关配了却不生效(环境变量被静默丢弃 + 迁移到后台开关)
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/Wei-Shaw/sub2api/internal/pkg/logger"
|
||||
"github.com/google/wire"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// BuildInfo contains build information
|
||||
@@ -521,20 +522,33 @@ func ProvideAPIKeyAuthCacheInvalidator(apiKeyService *APIKeyService) APIKeyAuthC
|
||||
return apiKeyService
|
||||
}
|
||||
|
||||
// ProvideImageStorageSettingService 构造异步生图对象存储的后台设置服务。
|
||||
//
|
||||
// config.yaml 里的 image_storage 作为回落:后台从未保存过设置时沿用它,
|
||||
// 使升级前已通过配置文件开启该功能的部署不被打断。
|
||||
func ProvideImageStorageSettingService(
|
||||
settingRepo SettingRepository,
|
||||
encryptor SecretEncryptor,
|
||||
backup *BackupService,
|
||||
factory ImageStorageFactory,
|
||||
cfg *config.Config,
|
||||
) *ImageStorageSettingService {
|
||||
if cfg.ImageStorage.Enabled && !cfg.ImageStorage.Active() {
|
||||
// 列出具体缺失的键。若这些键其实已在环境变量里设过,说明它们没被读进来,
|
||||
// 请确认 setDefaults 中已为其注册默认值(见 config.setEnvReachableDefaults)。
|
||||
logger.L().Warn("image_storage.enabled is true in config but object storage is not fully configured; configure it in the admin UI or complete the config file",
|
||||
zap.Strings("missing_keys", cfg.ImageStorage.MissingCredentialKeys()))
|
||||
}
|
||||
return NewImageStorageSettingService(settingRepo, encryptor, backup, factory, cfg.ImageStorage)
|
||||
}
|
||||
|
||||
// ProvideImageTaskService 构造异步图片任务服务。
|
||||
//
|
||||
// 对象存储是异步图片任务的启用前提:仅当 image_storage 开关打开且凭证齐全时,
|
||||
// 服务才启用,并挂上把结果转存到对象存储的 uploader;否则功能整体禁用
|
||||
// 对象存储是异步图片任务的启用前提:仅当开关打开且凭证齐全时功能才可用,否则整体禁用
|
||||
// (handler 返回 404,不创建任务、不写 Redis),从而避免大 base64 结果撑爆 Redis。
|
||||
func ProvideImageTaskService(store ImageTaskStore, storage ImageStorage, cfg *config.Config) *ImageTaskService {
|
||||
if !cfg.ImageStorage.Active() {
|
||||
if cfg.ImageStorage.Enabled {
|
||||
logger.L().Warn("image_storage.enabled is true but object storage is not fully configured; async image tasks are disabled")
|
||||
}
|
||||
return NewImageTaskService(store)
|
||||
}
|
||||
uploader := NewImageResultUploader(storage, cfg.ImageStorage.Prefix, cfg.ImageStorage.MaxDownloadByte, nil)
|
||||
return NewImageTaskServiceWithUploader(store, uploader, defaultImageTaskTTL, defaultImageTaskExecutionTimeout)
|
||||
// 启用状态由 settings 服务在运行时解析,因此后台改开关后无需重启即可生效。
|
||||
func ProvideImageTaskService(store ImageTaskStore, settings *ImageStorageSettingService) *ImageTaskService {
|
||||
return NewImageTaskServiceWithResolver(store, settings.Resolver(), defaultImageTaskTTL, defaultImageTaskExecutionTimeout)
|
||||
}
|
||||
|
||||
// ProvideBackupService creates and starts BackupService
|
||||
@@ -680,6 +694,7 @@ var ProviderSet = wire.NewSet(
|
||||
NewAdminService,
|
||||
NewGatewayService,
|
||||
NewOpenAIGatewayService,
|
||||
ProvideImageStorageSettingService,
|
||||
ProvideImageTaskService,
|
||||
ProvideBatchImageModelPricingResolver,
|
||||
NewBatchImagePublicService,
|
||||
|
||||
Reference in New Issue
Block a user