Skip to content

Commit b6498fc

Browse files
committed
fix Bug: novelai队列429错误 #217
1 parent dcfda09 commit b6498fc

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ export interface Config extends PromptConfig, ParamConfig {
237237
requestTimeout?: number
238238
recallTimeout?: number
239239
maxConcurrency?: number
240+
globalConcurrency?: number
240241
pollInterval?: number
241242
trustedWorkers?: boolean
242243
}
@@ -389,6 +390,7 @@ export const Config = Schema.intersect([
389390
requestTimeout: Schema.number().role('time').description('当请求超过这个时间时会中止并提示超时。').default(Time.minute),
390391
recallTimeout: Schema.number().role('time').description('图片发送后自动撤回的时间 (设置为 0 以禁用此功能)。').default(0),
391392
maxConcurrency: Schema.number().description('单个频道下的最大并发数量 (设置为 0 以禁用此功能)。').default(0),
393+
globalConcurrency: Schema.number().min(0).description('全局的最大并发数量 (设置为 0 以禁用此功能)。').default(0),
392394
}).description('高级设置'),
393395
]) as Schema<Config>
394396

src/index.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Computed, Context, Dict, h, Logger, omit, Quester, Session, SessionError, trimSlash } from 'koishi'
1+
import { Computed, Context, Dict, h, Logger, omit, Quester, Session, SessionError, sleep, trimSlash } from 'koishi'
22
import { Config, modelMap, models, orientMap, parseInput, sampler, upscalers, scheduler } from './config'
33
import { ImageData, StableDiffusionWebUI } from './types'
44
import { closestMultiple, download, forceDataPrefix, getImageSize, login, NetworkError, project, resizeInput, Size } from './utils'
@@ -285,6 +285,12 @@ export function apply(ctx: Context, config: Config) {
285285
session.send(globalTasks.size
286286
? session.text('.pending', [globalTasks.size])
287287
: session.text('.waiting'))
288+
289+
if (config.globalConcurrency) {
290+
while (globalTasks.size >= config.globalConcurrency) {
291+
await sleep(100)
292+
}
293+
}
288294

289295
container.forEach((id) => globalTasks.add(id))
290296
const cleanUp = (id: string) => {
@@ -428,7 +434,6 @@ export function apply(ctx: Context, config: Config) {
428434
const uuid = res.data.id
429435

430436
const check = () => ctx.http.get(trimSlash(config.endpoint) + '/api/v2/generate/check/' + uuid).then((res) => res.done)
431-
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
432437
while (await check() === false) {
433438
await sleep(config.pollInterval)
434439
}

0 commit comments

Comments
 (0)