我在一个有 5 个正在运行的实例的网络应用程序上托管了一个 NodeJS 网络作业。 我正在使用 Kudu API 触发网络作业
https://xyz.scm.azurewebsites.net/api/triggeredwebjobs/webjobname/run
第一个请求被接受并且 webjob 开始运行但是任何后续请求都给出错误,因为作业处于运行状态。
HTTP 409 Cannot start a new run since job is already running.
我希望我应该能够使用 REST 端点触发 5 次,并且托管“免费”作业的另一个 webapp 实例应该会拾取它。那不可能吗?尽管您正在运行多个 webapp 实例,您能否只触发一个 webjob?
将应用程序服务计划的扩展增加到 5 个实例,并尝试使用 KUDU API 触发“触发的网络作业” 期望:应该能够提交 5 个请求,因为“免费实例”将处理请求 实际:第一个请求使用 HTTP 202 提交,任何其他请求都以 409 失败,直到第一个 webjob 完成运行。
如 MSdoc 中所述,要在多个实例上运行 WebJob,请使用 Continuous Job。
如果您的 Web 应用程序在多个实例上运行,则连续的 WebJob 在每个实例上运行,监听触发器和调用函数。
触发的工作:
连续工作: 可以扩展连续 Web 作业以运行多个实例。
使用 KUDU API:
将应用程序服务计划的扩展增加到 5 个实例,并尝试使用 KUDU API Expectations 触发“触发的网络作业”:
由于触发作业仅在单个实例中运行,应用服务计划的扩展不会进行任何更改。