31 lines
1008 B
TypeScript
31 lines
1008 B
TypeScript
import pLimit from 'p-limit'
|
|
|
|
/**
|
|
* The concurrency value used by the global limit.
|
|
* This represents the *actual* limit value.
|
|
* The value in `globalLimit` should not be used, because `deepResearch` uses recursive calls,
|
|
* and `globalLimit.concurrency` can be much higher than the actual one.
|
|
*/
|
|
let globalLimitConcurrency = 2
|
|
const globalLimit = pLimit(globalLimitConcurrency)
|
|
|
|
export function usePLimit() {
|
|
const { config } = useConfigStore()
|
|
|
|
if (
|
|
config.webSearch.concurrencyLimit &&
|
|
config.webSearch.concurrencyLimit >= 1 &&
|
|
globalLimitConcurrency !== config.webSearch.concurrencyLimit
|
|
) {
|
|
console.log(
|
|
`[usePLimit] Updating concurrency from ${globalLimitConcurrency} to ${config.webSearch.concurrencyLimit}. Current concurrency: ${globalLimit.concurrency}`,
|
|
)
|
|
let newLimit = config.webSearch.concurrencyLimit
|
|
let diff = newLimit - globalLimitConcurrency
|
|
globalLimitConcurrency = newLimit
|
|
globalLimit.concurrency += diff
|
|
}
|
|
|
|
return globalLimit
|
|
}
|