我编写了一个Node应用程序,该应用程序本质上可以用作Task Scheduler(或cron),以使用节点计划在设置的时间间隔上运行批处理。当我在本地或VM上运行此程序时,该过程将连续运行并执行我的作业,直到该过程被强行终止。当我将此应用程序作为Azure应用程序服务部署到Azure时,该过程更多地被视为“ Web应用程序”,并且在站点上一段时间不活动(即没有网络流量)之后,Azure终止了该过程。如果我通过浏览器访问“站点”,它将再次将其踢回。
Azure似乎已将Node应用程序绑定为基于表达的“ Web应用程序”,据我所知,没有一种方法可以可靠地部署我的命令行应用程序。我是否缺少某些东西,或者是否有更好的方法通过Web App或其他产品在Azure中部署此应用程序?确实希望避免仅为此目的而维护VM。
答案 0 :(得分:0)
对于您当前的空闲超时问题,有一个简单的配置称为Always on。在这里查看链接-https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure。
始终打开。默认情况下,如果网络应用闲置了一段时间,则会将其卸载 一段的时间。这样可以节省系统资源。在基本或 在标准模式下,您可以启用“始终开启”以保持应用程序全部加载 时间。如果您的应用程序运行连续WebJobs或运行已触发的WebJobs 使用CRON表达式,您应该启用Always On或Web作业 可能无法可靠运行。
也请在此处查看有关成本影响的讨论-Does the Azure Websites "*Always On" option have any implication on price?
现在,对于您的任务计划问题,App Service是否是最佳解决方案,是一个比较主观和更长的讨论,您需要在其中评估Azure拥有的多种产品以及您的要求/优先级等。
Azure拥有自己的任务计划服务-https://azure.microsoft.com/en-us/services/scheduler/
计划程序作业非常容易从Azure门户进行配置。您可以:
如果这些Azure Scheduler功能还不够,并且您需要更多的投入,那么这里是有关后台作业的最佳做法文档的一些指导-https://docs.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#schedule-driven-triggers