You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多实例WebApp触发Node.js WebJob遇HTTP 409冲突错误问询

问题描述

我在拥有5个运行实例的WebApp上部署了一个Node.js触发式WebJob,使用Kudu API触发该WebJob,调用地址为:

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触发“触发式WebJob”,预期可提交5次请求由空闲实例处理,实际却只有第一个请求返回HTTP 202,其余请求在第一个WebJob完成前均返回409错误。

解决方案

原因分析

触发式WebJob默认启用**单实例运行(Singleton)**机制,这意味着无论WebApp有多少个实例,同一时间只能有一个实例运行该WebJob。Kudu API的触发请求是针对整个WebJob资源的,而非单个实例,所以当已有一个WebJob实例在运行时,后续触发请求会返回409冲突错误。

解决步骤

  • 修改WebJob运行配置
    在WebJob的根目录下创建或编辑settings.job文件,添加以下配置:

    {
      "is_singleton": false
    }
    

    该配置会禁用单实例限制,允许WebApp的多个实例同时运行该触发式WebJob。

  • 重新部署WebJob
    将修改后的settings.job文件与WebJob代码一起重新部署到Azure,确保配置生效。

  • 验证并发触发
    配置生效后,再次通过Kudu API触发WebJob,此时可同时发起多个请求,空闲的WebApp实例会分别处理这些请求,不会再返回409错误。

注意事项

  • 若WebJob涉及共享资源(如数据库锁、文件读写),禁用单实例后需自行处理并发访问的冲突问题,避免数据不一致。
  • 确保应用服务计划的实例数足够承载并发运行的WebJob实例,避免资源不足导致性能问题。

内容的提问来源于stack exchange,提问作者akum1143

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:32:10