【问题标题】:How can I get running processes count in node.js如何在 node.js 中获取正在运行的进程数
【发布时间】:2017-10-23 21:24:36
【问题描述】:

场景:

  1. 我有一个可供多个用户访问的服务器。前服务器:http://127.0.0.1:8081

  2. 它有一个按钮,点击它,它会运行一个 selenium 自动化测试。

  3. 我想获取当前由多个用户运行的测试列表。

例如:如果有 5 个用户正在访问该服务器并单击该按钮 2 次,则意味着运行的自动化测试是 10 个。

我怎样才能在 node.js express 中超过计数,比如有多少进程正在运行?

我的 server.js :

var express = require('express');
var app = express();


app.get('/', function (req, res) {
   res.send(
    '<form action="/server" method="POST">' +
    '  <input type="submit" name="server" value="Run Script" />' +
    '</form>');
});

app.post('/server', function (req, res) {
  var fork = require('child_process').fork;
  var child = fork('./test');
  res.send('Test Started....');

});

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)

【问题讨论】:

  • 保持计数,当你用fork创建时增加计数器,。当你的child.on('close' 被触发时,减少计数器。
  • @Keith - 请给我示例代码。这会很有帮助。

标签: javascript node.js selenium


【解决方案1】:

未经过测试,但以下内容应该可以满足您的需求。

不确定您是否要访问计数器,因此执行了另一条路由 /counter 来回显当前计数器。

var express = require('express');
var app = express();

var counter = 0;


app.get('/', function (req, res) {
   res.send(
    '<form action="/server" method="POST">' +
    '  <input type="submit" name="server" value="Run Script" />' +
    '</form>');
});

app.get('/counter', function (req, res) {
  res.end("Counter = " + counter);
});

app.post('/server', function (req, res) {
  var fork = require('child_process').fork;
  var child = fork('./test');
  counter ++;
  child.on("close", function () { counter --; });
  res.send('Test Started....');
});

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)

【讨论】:

    【解决方案2】:

    您可以维护点击按钮的全局计数。

    global.total_tests = 0; // note this line
    var express = require('express');
    var app = express();
    
    
    app.post('/server', function (req, res) {
        var fork = require('child_process').fork;
        var child = fork('./test');
        res.send('Test Started....');
        total_tests++; // note this line
    });
    

    我希望这会有所帮助。 谢谢。

    【讨论】:

      【解决方案3】:

      我建议按照this earlier Stackoverflow post 中的建议使用ps-node

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 2010-09-18
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        相关资源
        最近更新 更多