读取ECONNRESET牛库报错如何解决
how to solve error read ECONNRESET bull library
当我在节点 js 中使用 bull 库排队时出现错误,错误如下:
Error: read ECONNRESET at TCP.onStreamRead
- - errno: -104,
- - code: 'ECONNRESET',
- - syscall: 'read'
- - }
和
MaxRetriesPerRequestError: Reached the max retries per request limit (which is 20). Refer to "maxRetriesPerRequest" option for details.
这是我的代码:
const imageQueue = new Bull("imageQueue", process.env.REDIS_URL);
bull 使用 ioredis 进行连接,并允许在 Queue 构造函数中使用第三个 opts 参数。根据 source code it looks for a redis property within those opts.
您可以试试这个 raise the retry limit to 100。
const opts = {redis:{maxRetriesPerRequest:100}}
const imageQueue = new Bull("imageQueue", process.env.REDIS_URL, opts);
但是,您使用 Heroku 的 redis 服务的频率可能超过免费层允许的范围(如果您使用的是免费层)。
错误通过添加tls成功解决
const imageQueue = new Bull("imageQueue", process.env.REDIS_TLS_URL, {
redis: { tls: { rejectUnauthorized: false } },
});
当我在节点 js 中使用 bull 库排队时出现错误,错误如下:
Error: read ECONNRESET at TCP.onStreamRead
- - errno: -104,
- - code: 'ECONNRESET',
- - syscall: 'read'
- - }
和
MaxRetriesPerRequestError: Reached the max retries per request limit (which is 20). Refer to "maxRetriesPerRequest" option for details.
这是我的代码:
const imageQueue = new Bull("imageQueue", process.env.REDIS_URL);
bull 使用 ioredis 进行连接,并允许在 Queue 构造函数中使用第三个 opts 参数。根据 source code it looks for a redis property within those opts.
您可以试试这个 raise the retry limit to 100。
const opts = {redis:{maxRetriesPerRequest:100}}
const imageQueue = new Bull("imageQueue", process.env.REDIS_URL, opts);
但是,您使用 Heroku 的 redis 服务的频率可能超过免费层允许的范围(如果您使用的是免费层)。
错误通过添加tls成功解决
const imageQueue = new Bull("imageQueue", process.env.REDIS_TLS_URL, {
redis: { tls: { rejectUnauthorized: false } },
});