在azure批处理启动中启动节点服务器

问题描述 投票:0回答:1

我是Azure批处理的新手。我在Windows环境中工作。 我的要求是,在任何批处理任务在机器上运行之前,节点js服务器应该运行。我尝试在作业准备任务中启动节点服务器以及使用以下任务命令行语句启动池启动任务 cmd / c start node.exe my_js_file.js 但是一旦启动任务完成,在机器上运行的节点服务器就会死亡。如果我不在上面的命令中使用start,节点服务器启动并继续运行,但启动任务也继续运行并且永远不会完成。 如何在azure批处理中在后台启动节点js服务器。 我还尝试在执行新任务时启动节点服务器(这是一个命令行应用程序)。但是一旦任务完成,节点进程也会被杀死。

node.js azure azure-batch
1个回答
0
投票

为了创建一个永远运行的分离进程,您有两个选择。可以从作业准备任务或启动任务完成任一选项,但要注意,如果您有多个作业需要启动相同的node.js服务器上下文,则可能会遇到错误。如果在作业级别使用此选项,请确保指定了正确终止长时间运行进程的作业发布任务。另请注意,如果允许在同一节点上共同调度多个任务,则如果它们需要相同的长期过程,则可能存在交互冲突。

  1. 建议的方法是安装运行命令的Windows服务。有多种方法来引导服务,包括使用命令行sc program或无数的帮助程序代表您执行此操作。
  2. 如果您不想(或不能)安装Windows服务,可以创建一个C ++程序,将您的命令作为“分离过程”调用。请参阅MSDN CreateProcess文档,并确保为CREATE_BREAKAWAY_FROM_JOB指定dwCreationFlags标志。必须使用提升(管理员)权限运行此任务。还建议您在默认启动任务工作目录之外的文件夹中启动进程(这样计算节点重新启动不会影响您可能在当前工作目录中生成的文件)。
© www.soinside.com 2019 - 2024. All rights reserved.