Запуск сервера узлов в пакетном запуске Azure

Я новичок в пакетной службе Azure. Я работаю в среде windows .
Мое требование: сервер node js должен быть запущен до того, как на компьютере будет запущена какая-либо пакетная задача. Я попытался запустить сервер узла в задаче подготовки задания, а также в задаче запуска пула с помощью следующего оператора командной строки задачи

cmd / c start node.exe my_js_file.js

Но как только задача запуска завершается, сервер Node, работающий на машине, умирает. Если я не использую start в приведенной выше команде, сервер узла запускается и продолжает работать, но задача запуска также продолжает выполняться и никогда не завершается.
Что я могу сделать, чтобы запустить сервер node js в фоновом режиме в пакете Azure.

Я также пытался запустить сервер узла при выполнении новой задачи (которая является приложением командной строки). Но как только задача завершается, процесс узла также прекращается.


person d123    schedule 28.02.2018    source источник


Ответы (1)


Для создания автономного процесса, который запускается вечно, у вас есть два варианта. Любой из вариантов может быть выполнен из задачи подготовки задания или задачи запуска, но имейте в виду, что если у вас есть несколько заданий, требующих для запуска одного и того же контекста сервера node.js, вы можете столкнуться с ошибками. Убедитесь, что при использовании этого на уровне задания вы правильно указали задачу освобождения задания, которая завершает длительный процесс. Также имейте в виду, что если вы разрешите одновременное планирование нескольких задач на одном узле, могут возникнуть конфликты взаимодействия, если они требуют одного и того же долгоживущего процесса.

  1. Рекомендуемый способ - установить службу Windows, которая выполняет вашу команду. Существуют различные способы начальной загрузки службы, в том числе использование командной строки sc program или множество вспомогательных программ, которые сделают это от вашего имени.
  2. Если вы не хотите (или не можете) устанавливать службу Windows, вы можете создать программу на C ++, которая будет вызывать вашу команду как «отколовшийся процесс». См. MSDN CreateProcess документации и убедитесь, что вы указали флаг CREATE_BREAKAWAY_FROM_JOB для dwCreationFlags. Эту задачу необходимо запускать с повышенными правами (администратора). Также рекомендуется запускать процесс в папке за пределами рабочего каталога задачи запуска, который используется по умолчанию (так, чтобы перезапуски вычислительного узла не влияли на возможные файлы, которые вы можете создать в текущем рабочем каталоге).
person fpark    schedule 28.02.2018