Как функция Azure может запустить более крупное приложение Node.js по команде - PullRequest
1 голос
/ 01 июля 2019

У меня есть приложение, которое использует Selenium WebDriver для автоматизации визуального тестирования веб-сайта, смоделированного в другом браузере на другом сервере / компьютере.В том же приложении я делаю скриншоты веб-сайта и отправляю их на конечную точку хранилища.

В одном из возможных сценариев я хотел бы, чтобы это приложение запускалось по команде функции Azure после получения сообщения оточередь сообщений.

Вопрос: Как функция Azure может запустить приложение Node.js по команде?Могу ли я поместить это приложение в Azure Web App?

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Если ваше приложение Node.js является веб-службой Azure или веб-службой Azure, вы можете запустить ее с помощью API REST. Вот веб-приложение и веб-джоб .

Исходя из вашей ситуации, я думаю, вы могли бы просто разработать функцию триггера очереди (Node.js), не нужно использовать функцию триггера очереди для вызова приложения Node.js. Ниже приведен пример функции очереди Node.js. ,

module.exports = async function (context, message) {
    context.log('Node.js queue trigger function processed work item', message);
    // OR access using context.bindings.<name>
    // context.log('Node.js queue trigger function processed work item', context.bindings.myQueueItem);
    context.log('expirationTime =', context.bindingData.expirationTime);
    context.log('insertionTime =', context.bindingData.insertionTime);
    context.log('nextVisibleTime =', context.bindingData.nextVisibleTime);
    context.log('id =', context.bindingData.id);
    context.log('popReceipt =', context.bindingData.popReceipt);
    context.log('dequeueCount =', context.bindingData.dequeueCount);
    context.done();
}; 

Дополнительная информация о функции Node.js приведена в следующих документах: Триггер - пример JavaScript и Руководство разработчика JavaScript по функциям Azure .

0 голосов
/ 02 июля 2019

Как я знаю, Selenium WebDriver работает для взаимодействия с браузерами, которым требуется поддержка GDI.Однако из-за Win32k.sys (User32/GDI32) Restrictions из Azure Web App sandbox, как указано ниже, вы не можете плавно перенести приложение Node для визуального тестирования и снимки экрана, чтобы службы приложений Azure для Windows, включая Azure WebApp, Azure Functions и WebJobs.

enter image description here

Для вас есть два решения: службы приложений Azure в Linux или виртуальная машина Azure.

  1. КомуСоздайте предварительно установленный образ Docker без заголовка Chrome / Chromium и разверните в нем свое приложение Node в качестве веб-приложения, затем вы можете сделать то же самое, запросив его у функций Azure с нужным триггером.Или даже напрямую интегрировать это приложение Node с функциями Azure в Linux.Вы можете обратиться к этим официальным учебным пособиям, чтобы получить знания о функциях Azure в Windows / Linux, таких как Создайте свою первую функцию, размещенную в Linux, с помощью Core Tools и Azure CLI (предварительный просмотр) .

  2. Чтобы создать виртуальную машину Azure, вы можете делать что угодно, даже запускать среду разработки Azure Functions с триггером на виртуальной машине вместо экземпляра Azure Functions.Основная логическая схема заключается в использовании Dev Env функций Azure с триггером для вызова приложения Node, чтобы их можно было развернуть на одной виртуальной машине.

Надеюсь, это поможет.Любое беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.

...