Conflict 409 Error Triggering webjob running on multiple webapp instances

问题描述 投票:0回答:1

我在一个有 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 完成运行。

azure-web-app-service azure-webjobs azure-webjobssdk azure-webjobs-triggered
1个回答
0
投票

MSdoc 中所述,要在多个实例上运行 WebJob,请使用 Continuous Job。

如果您的 Web 应用程序在多个实例上运行,则连续的 WebJob 在每个实例上运行,监听触发器和调用函数。

  • 我们也可以在应用服务中看到相同的情况,只有连续作业才有多实例选项。

触发的工作: enter image description here

连续工作: 可以扩展连续 Web 作业以运行多个实例。

enter image description here

使用 KUDU API:

enter image description here

将应用程序服务计划的扩展增加到 5 个实例,并尝试使用 KUDU API Expectations 触发“触发的网络作业”:

由于触发作业仅在单个实例中运行,应用服务计划的扩展不会进行任何更改。

另请参阅 SOThreads 12,它们解释了一次运行多个 Web 作业实例。

© www.soinside.com 2019 - 2024. All rights reserved.