gpt4 book ai didi

javascript - Promise 队列中的 Bluebird 队列并发未按预期工作

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:46 25 4
gpt4 key购买 nike

我正在使用 bluebird-queue通过 NodeJS 将 HTTP 端点作为任务排队。每个任务都有一个 3 级的 Promise 依赖关系,必须在完成之前解决。

一个任务

GET -> endpoint 1 // returns promise
GET -> other endpoints in async // returns promise
POST -> final endpoint // return promise

我使用 queue.add() 将 20,000 个这样的任务放入 bluebird-queue,然后调用 queue.start()。捕获所有错误并且处理程序解决 Promise 以便任务可以完成。

我已将并发设置为 50。我最初的期望是队列将在任何给定时间处理 50 个,但它会等待前 50 个完成,然后再开始下一个 50 个。

不幸的是,其中一些请求最多可能需要 10 秒才能完成 - 如果单个请求需要更长的时间才能完成,则整个队列都会停止,直到 Promise 解决。

如果这是预期的行为,我可以做什么/使用什么来确保队列中的任务在任何给定时间最多处理 50 个任务,而不是一次处理 50 个任务?

这是我的配置设置:

var Queue = require('bluebird-queue'),
queue = new Queue({
concurrency: 50,
delay: 10, // ms
interval: 1 // ms not quite sure what this means
});

感谢任何帮助。

最佳答案

通读 bluebird-queue 的代码后,很明显您看到的有关并发的行为是预期的。我同意这有点令人惊讶。似乎没有任何方法可以获得所需的行为。

我建议尝试 promise-queue .根据对代码的快速阅读,它似乎会按您预期的那样工作。

关于javascript - Promise 队列中的 Bluebird 队列并发未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com