Azure函数如何根据命令启动更大的Node.js应用程序

Azure函数如何根据命令启动更大的Node.js应用程序,node.js,azure,azure-functions,Node.js,Azure,Azure Functions,我有一个应用程序,它使用SeleniumWebDriver在另一台服务器/计算机的不同浏览器上模拟一个网站的可视化测试。在同一个应用程序中,我正在拍摄网站的屏幕截图,并将其发送到存储端点 在一种可能的情况下,我希望此应用程序在从消息队列接收消息后从Azure函数的命令运行 问题:Azure函数如何根据命令启动Node.js应用程序?我可以将此应用程序置于和Azure Web App下吗?如果你的Node.js应用程序是Azure Web或Azure Webjob,你可以使用REST API启动它

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

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


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

如果你的Node.js应用程序是Azure Web或Azure Webjob,你可以使用REST API启动它。这是和

根据您的情况,我认为您可以只开发一个队列触发函数(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();
}; 
module.exports=异步函数(上下文、消息){
log('Node.js queue trigger function processed work item',message);
//或使用context.bindings访问。
//log('Node.js queue trigger function processed work item',context.bindings.myQueueItem);
log('expirationTime=',context.bindingData.expirationTime);
log('insertionTime=',context.bindingData.insertionTime);
log('nextVisibleTime=',context.bindingData.nextVisibleTime);
log('id=',context.bindingData.id);
log('popReceivement=',context.bindingData.popReceivement);
log('dequeueCount=',context.bindingData.dequeueCount);
context.done();
}; 

关于Node.js函数的更多信息,您可以参考以下文档:和。

据我所知,Selenium WebDriver用于与需要
GDI
支持的浏览器通信。但是,由于下面的
Azure Web App sandbox
的问题,因此您无法顺利地将节点应用程序迁移到Azure应用程序,以进行视觉测试和屏幕截图,这些针对Windows的服务包括Azure WebApp、Azure功能和WebJobs

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

  • 要构建预安装的headless chrome/chrome Docker映像并将您的节点应用程序作为web应用程序部署到其中,那么您可以通过从Azure功能中请求它并使用所需的触发器来执行相同的操作。甚至可以直接将此节点应用程序与Linux上的Azure功能集成。您可以参考这些官方教程来了解Windows/Linux上的Azure功能,例如

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


  • 希望能有帮助。如有任何问题,请随时通知我。

    此应用程序与Github持续集成应用程序Nodejs配合使用。我决定把这件事弄得过于复杂,我把这段代码放到Github应用程序中。如果我继续,我会采取你的方法。