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

时间:2018-02-28 15:39:11

标签: node.js azure azure-batch

我是Azure批处理的新手。我在 windows 环境工作 我的要求是,在任何批处理任务在机器上运行之前,节点js服务器应该运行。 我已经尝试在作业准备任务中启动节点服务器以及使用以下任务命令行语句
的池启动任务  
cmd / c start node.exe my_js_file.js

但是一旦启动任务完成,运行在机器上的节点服务器就会死机。 如果我在上面的命令中没有使用 start ,节点服务器会启动并继续运行,但启动任务也会继续运行并且永远不会完成。
如何在azure批处理中在后台启动节点js服务器。  

我还尝试在执行新任务时启动节点服务器(这是一个命令行应用程序)。但是一旦任务完成,节点进程也会被杀死。

1 个答案:

答案 0 :(得分:0)

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

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