Highcharts-exports-server给出 - 幻像 - 队列已满,丢弃请求错误

时间:2017-12-19 16:47:44

标签: highcharts

我正在使用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();中传递一些配置但不确定。

任何建议/帮助都将受到高度赞赏。

1 个答案:

答案 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
});

这解决了我的问题。