0

Nodejs で Web サイトのスクリーンショットを取得するスクリプトを作成しました (を使用slimerJs)。このスクリプトは完了するまでに約 10 ~ 20 秒かかります。ここでの問題は、このスクリプトが完了するまでサーバーが停止することです。

app.get('/screenshot', function (req, res, next) {
  var url = req.query.url;
  assert(url, "query param 'url' needed");
  // actual saving happens here
  var fileName = URL.parse(url).hostname + '_' + Date.now() + '.png';
  var command = 'xvfb-run -a -n 5 node slimerScript.js '+ url + ' '+ fileName;
  exec(command, function (err, stdout, stderror) {
    if(err){ return next(err); }
    if(stderror && (stderror.indexOf('error')!= -1) ){ return next(new Error('Error occurred!')); }
    return res.send({
      status: true,
      data: {
        fileName: fileName,
        url: "http://"+path.join(req.headers.host,'screenshots', fileName)
      }
    });
  })
});

スクリプトはメモリ内に Firefox ブラウザを生成し、Web サイトをロードするため、RAM の使用量が 600 ~ 700 MB まで急増する可能性があり、RAM はサーバー上で高価であるため、このコマンドを非同期的に実行することはできません。

着信要求をキューに入れ、FIFO 方式で実行できるかどうかを教えてください。

kue、bull、bee-queues などのパッケージをチェックしてみましたが、これらはすべて、キューが開始される前にジョブ リストが既にわかっていることを前提としていると思います。私のジョブ リストは、サイトを使用しているユーザーに依存するためです。彼らは列に並んでいて、順番を待つ必要があります。上記のパッケージでこれは可能ですか?

4

1 に答える 1