【问题标题】:Start new process on nodejs在 nodejs 上启动新进程
【发布时间】:2012-08-06 06:10:41
【问题描述】:

我正在使用 node.js,并且我希望在有对 ./calculate 之类的 url 的请求时启动一个新进程来进行这些复杂的计算,并且我希望该进程继续进行,即使调用它的脚本也是如此已完成。 有可能吗?

谢谢。

【问题讨论】:

    标签: javascript node.js process


    【解决方案1】:

    您可以使用本机提供的子进程工具: http://nodejs.org/api/child_process.html

    并使用 unix "nohup" 命令来保持生成的进程在父进程死亡的情况下仍处于活动状态。

    【讨论】:

    • 您是否正在寻找要在创建它的同一连接中返回子进程工作的结果?
    • 你可以聪明一点,创建一个子工作者池,并通过数据库中的队列与他们通信(比如使用 Redis 之类的东西),这可以非常具有可扩展性和弹性。您可能会发现一些有用的链接:stackoverflow.com/questions/5630208/…stackoverflow.com/questions/4762016/…
    • 不,我只是想开始这个过程,我不介意结果。
    【解决方案2】:

    对此有不同的方法。

    你可以使用https://github.com/pgriess/node-webworker

    或者更好http://nodejs.org/docs/latest/api/cluster.html#cluster_cluster

    这些解决方案是,如果您想在 Node 中创建一个子进程,您也可以简单地生成一个新的 Node 进程并等待输出 (http://nodejs.org/api/all.html#all_child_process_spawn_command_args_options) 但 node- webworker 是该解决方案的包装器,并且更清洁。

    【讨论】:

    • 但我根本不等。我想调用子进程而不是更多。我的意思是,如果主脚本死掉或 http 服务器结束,我希望子进程继续。谢谢。
    【解决方案3】:

    所以在你最后的评论之后,我知道更清楚你想要做什么。

    您想要生成进程而不是子进程。最好和更干净的方法是使用某种恶魔化器来运行它们。

    永远看看:
    https://github.com/nodejitsu/forever
    https://github.com/nodejitsu/forever-monitor

    这可能是您的完美工具。我从来没有以编程方式使用过它,只是 cli。但这是我要研究的。

    【讨论】:

    • 非常感谢,但我发现命令 nohup 对我有好处;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2017-06-01
    • 2018-12-28
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多