Skip to content

Commit 1f27002

Browse files
committed
feat(proxy): 多线程支持自定义线程和块大小
1 parent abb6d24 commit 1f27002

13 files changed

Lines changed: 511 additions & 44 deletions

File tree

configs/init.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func Init() {
8282
new(models.VirtualFile),
8383
new(models.UserGroup),
8484
new(models.Group2File),
85+
new(models.SettingDict),
8586
); err != nil {
8687
panic(err)
8788
}
@@ -110,6 +111,20 @@ func Init() {
110111
panic(err)
111112
}
112113

114+
var dicts = make([]*models.SettingDict, 0)
115+
if err = db.Model(new(models.SettingDict)).Find(&dicts).Error; err != nil {
116+
panic(err)
117+
}
118+
119+
for _, dict := range dicts {
120+
switch dict.Key {
121+
case models.SettingDictKeyMultipleStreamThreadCount:
122+
shared.MultipleStreamThreadCount = dict.Value.Int()
123+
case models.SettingDictKeyMultipleStreamChunkSize:
124+
shared.MultipleStreamChunkSize = dict.Value.Int64()
125+
}
126+
}
127+
113128
shared.Setting = setting
114129

115130
logger.Info("binary build info",

fe/src/api/setting.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@ export interface Setting {
88
enableAuth: boolean
99
localProxy: boolean
1010
multipleStream: boolean
11-
runTimes: number // 后端实际返回的字段名
11+
runTimes: number // 已经运行的时间
1212
createdAt: string
1313
updatedAt: string
1414
baseURL: string
1515
enableTopFileAutoRefresh: boolean
1616
initialized: boolean // 系统是否初始化完成
1717
jobThreadCount: number // 任务线程数
1818
autoRefreshMinutes: number // 自动刷新间隔(分钟)
19+
multipleStreamThreadCount: number // 多线程流线程数
20+
multipleStreamChunkSize: number // 多线程流块大小
1921
}
2022

2123
export interface InitSystemRequest {
@@ -58,6 +60,21 @@ export interface ModifyAutoRefreshMinutesRequest {
5860
autoRefreshMinutes: number
5961
}
6062

63+
// 新增:修改多线程流线程数请求
64+
export interface ModifyMultipleStreamThreadCountRequest {
65+
multipleStreamThreadCount: number // 1-64之间
66+
}
67+
68+
// 新增:修改多线程流块大小请求
69+
export interface ModifyMultipleStreamChunkSizeRequest {
70+
multipleStreamChunkSize: number // 512KB-32MB之间
71+
}
72+
73+
// 新增:修改操作的通用响应
74+
export interface ModifyResponse {
75+
rowsAffected: number
76+
}
77+
6178
// 设置API
6279
export const settingApi = {
6380
// 获取设置
@@ -110,6 +127,16 @@ export const settingApi = {
110127
return api.post('/setting/modify_auto_refresh_minutes', data)
111128
},
112129

130+
// 新增:修改多线程流线程数
131+
modifyMultipleStreamThreadCount: (data: ModifyMultipleStreamThreadCountRequest): Promise<ModifyResponse> => {
132+
return api.post('/setting/modify_multiple_stream_thread_count', data)
133+
},
134+
135+
// 新增:修改多线程流块大小
136+
modifyMultipleStreamChunkSize: (data: ModifyMultipleStreamChunkSizeRequest): Promise<ModifyResponse> => {
137+
return api.post('/setting/modify_multiple_stream_chunk_size', data)
138+
},
139+
113140
// 初始化系统
114141
initSystem: (data: InitSystemRequest): Promise<void> => {
115142
return api.post('/setting/init_system', data)

fe/src/stores/setting.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,36 @@ export const useSettingStore = defineStore('setting', () => {
137137
}
138138
}
139139

140+
// 新增:修改多线程流线程数
141+
const modifyMultipleStreamThreadCount = async (threadCount: number) => {
142+
try {
143+
await settingApi.modifyMultipleStreamThreadCount({
144+
multipleStreamThreadCount: threadCount
145+
})
146+
if (setting.value) {
147+
setting.value.multipleStreamThreadCount = threadCount
148+
}
149+
} catch (error) {
150+
console.error('修改多线程流线程数失败:', error)
151+
throw error
152+
}
153+
}
154+
155+
// 新增:修改多线程流块大小
156+
const modifyMultipleStreamChunkSize = async (multipleStreamChunkSize: number) => {
157+
try {
158+
await settingApi.modifyMultipleStreamChunkSize({
159+
multipleStreamChunkSize: multipleStreamChunkSize
160+
})
161+
if (setting.value) {
162+
setting.value.multipleStreamChunkSize = multipleStreamChunkSize
163+
}
164+
} catch (error) {
165+
console.error('修改多线程流块大小失败:', error)
166+
throw error
167+
}
168+
}
169+
140170
// 初始化系统
141171
const initSystem = async (data: InitSystemRequest) => {
142172
try {
@@ -162,6 +192,8 @@ export const useSettingStore = defineStore('setting', () => {
162192
toggleEnableTopFileAutoRefresh,
163193
modifyJobThreadCount,
164194
modifyAutoRefreshMinutes,
195+
modifyMultipleStreamThreadCount,
196+
modifyMultipleStreamChunkSize,
165197
initSystem
166198
}
167199
})

0 commit comments

Comments
 (0)