【问题标题】:How can an Azure Function start a larger Node.js application on commandAzure 函数如何根据命令启动更大的 Node.js 应用程序
【发布时间】:2019-07-01 20:21:42
【问题描述】:

我有一个应用程序,它使用 Selenium WebDriver 在另一台服务器/计算机上的不同浏览器上自动模拟网站的视觉测试。在同一个应用程序中,我正在截取网站的屏幕截图并将其发送到存储端点。

在一种可能的情况下,我希望此应用程序在收到来自消息队列的消息后从 Azure 函数的命令运行。

问题:Azure 函数如何根据命令启动 Node.js 应用程序?我可以将此应用程序放在 Azure Web App 下吗?

【问题讨论】:

  • 这个应用程序与一个 Github 持续集成应用程序以及 Nodejs 一起工作。我决定让这变得比必要的更复杂,并将这段代码放在 Github 应用程序中。如果我要继续,我会采取你的方法。

标签: node.js azure azure-functions


【解决方案1】:

如果您的 Node.js 应用程序是 azure web 或 Azure Webjob,您可以使用 REST API 启动它。这里是web appwebjob

从你的情况来看,我认为你可以只开发一个队列触发函数(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 Function 的更多信息,您可以参考这些文档:Trigger - JavaScript exampleAzure Functions JavaScript developer guide

【讨论】:

    【解决方案2】:

    据我所知,Selenium WebDriver 可以与需要GDI 支持的浏览器进行通信。但是,由于Azure Web App sandboxWin32k.sys (User32/GDI32) Restrictions 如下所示,因此您无法将用于可视化测试和屏幕截图的 Node 应用程序顺利迁移到适用于 Windows 的 Azure App 服务,包括 Azure WebApp、Azure Functions 和 WebJobs。

    有两种解决方案适合您:Linux 上的 Azure 应用服务或 Azure VM。

    1. 要构建一个预安装无头 chrome/chromium 的 Docker 映像并将您的 Node 应用程序作为 Web 应用程序部署到其中,然后您可以通过使用所需触发器从 Azure Functions 请求它来执行相同的操作。甚至直接将此 Node 应用与 Linux 上的 Azure Functions 集成。你可以参考这些官方教程来了解Windows/Linux上的Azure Functions,比如Create your first function hosted on Linux using Core Tools and the Azure CLI (preview)

    2. 要创建 Azure VM,您可以做任何您想做的事情,甚至可以在 VM 而不是 Azure Functions 实例上运行带有触发器的 Azure Functions 开发环境。基本逻辑流程是使用带有触发器的 Azure Functions 开发环境来调用您的 Node 应用程序,它们可以部署在同一个 VM 上。

    希望对您有所帮助。有任何问题,请随时告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多