我正在使用highcharts-exports-server批量生成图表图像。我一次创建大约1000张图像。
在节点服务器内运行。
这是代码
exporter.initPool();
_.forEach(configs, (config, index) => {
exporter.export(new ExporterSettings('png', config), (err, resp) => {
if(resp && resp.data) {
base64_decode(resp.data, `test-chart-${index}.png`);
}
});
});
base64_decode()
只是将base64编码的数据写入 .png
文件。
一切正常,但是对于10到15张图片,但我得到了错误
幻像 - 队列已满,丢弃请求错误
此错误来自phantompool.js
if (workQueue.length > 5) {
queueOverflow++;
log(2, 'phantom - queue is full, dropping request');
return fn && fn('server too busy, please try again later');
}
似乎是让工人保持温暖的一些逻辑。
如果我改变了 phantompool.js中的
if (workQueue.length > 5)
到if (workQueue.length > 9999)
一切顺利,没有任何错误。
我不知道我是否遗漏了一些配置。
我知道我们可以在exporter.initPool();
中传递一些配置但不确定。
任何建议/帮助都将受到高度赞赏。
答案 0 :(得分:0)
感谢Jes Constantine上面提出的问题,现在提供了一个修复程序:https://github.com/highcharts/node-export-server/commit/e6e2449d1d67719c116df46a859f5fccbccefc1a,虽然截至今天(2018年6月11日)它是主人,而不是任何版本。
因此,如果您使用以下命令安装它:
npm install https://github.com/highcharts/node-export-server/archive/2d07efcab1ab37660228736a5e6a3196f64be617.tar.gz --save
然后你可以像这样使用它:
exporter.initPool({
maxWorkers: 8,
initialWorkers: 8,
workLimit: 50,
queueSize: 500
});
这解决了我的问题。