Я новичок в пакетной службе Azure. Я работаю в среде windows .
Мое требование: сервер node js должен быть запущен до того, как на компьютере будет запущена какая-либо пакетная задача. Я попытался запустить сервер узла в задаче подготовки задания, а также в задаче запуска пула с помощью следующего оператора командной строки задачи
cmd / c start node.exe my_js_file.js
Но как только задача запуска завершается, сервер Node, работающий на машине, умирает. Если я не использую start в приведенной выше команде, сервер узла запускается и продолжает работать, но задача запуска также продолжает выполняться и никогда не завершается.
Что я могу сделать, чтобы запустить сервер node js в фоновом режиме в пакете Azure.
Я также пытался запустить сервер узла при выполнении новой задачи (которая является приложением командной строки). Но как только задача завершается, процесс узла также прекращается.
Запуск сервера узлов в пакетном запуске Azure
Ответы (1)
Для создания автономного процесса, который запускается вечно, у вас есть два варианта. Любой из вариантов может быть выполнен из задачи подготовки задания или задачи запуска, но имейте в виду, что если у вас есть несколько заданий, требующих для запуска одного и того же контекста сервера node.js, вы можете столкнуться с ошибками. Убедитесь, что при использовании этого на уровне задания вы правильно указали задачу освобождения задания, которая завершает длительный процесс. Также имейте в виду, что если вы разрешите одновременное планирование нескольких задач на одном узле, могут возникнуть конфликты взаимодействия, если они требуют одного и того же долгоживущего процесса.
- Рекомендуемый способ - установить службу Windows, которая выполняет вашу команду. Существуют различные способы начальной загрузки службы, в том числе использование командной строки sc program или множество вспомогательных программ, которые сделают это от вашего имени.
- Если вы не хотите (или не можете) устанавливать службу Windows, вы можете создать программу на C ++, которая будет вызывать вашу команду как «отколовшийся процесс». См. MSDN CreateProcess документации и убедитесь, что вы указали флаг
CREATE_BREAKAWAY_FROM_JOB
дляdwCreationFlags
. Эту задачу необходимо запускать с повышенными правами (администратора). Также рекомендуется запускать процесс в папке за пределами рабочего каталога задачи запуска, который используется по умолчанию (так, чтобы перезапуски вычислительного узла не влияли на возможные файлы, которые вы можете создать в текущем рабочем каталоге).
person
fpark
schedule
28.02.2018