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

如何避免Azure HTTP触发函数并发执行导致重复记录?

解决Azure Function并发重复写入Google Sheet的方案

以下几个简单方案可以解决你的问题:

  • 强制Function单实例运行
    直接在Azure Portal里找到你的Function App,进入「配置」-「应用程序设置」,添加或修改WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT参数,值设为1。这样不管外部发多少请求,Function只会启动一个实例处理,所有请求都会串行执行,从根源避免并发检查的问题。这个方案零代码改动,适合快速解决问题。

  • 用Azure Blob实现分布式锁
    针对每个请求的查询参数,生成唯一的锁标识(比如用参数哈希值当Blob名称)。处理请求前,先尝试获取这个Blob的租赁(Lease),租赁有效期设成你处理请求的最长耗时(比如30秒)。只有成功拿到租赁的请求才继续执行检查和写入操作,没拿到的直接返回「请求已在处理中」或者稍作重试。这种方式不会影响不同查询参数的请求并发,比单实例更灵活,代码改动也不大。

  • 转用队列触发串行处理
    修改HTTP触发的Function,不要直接处理写入逻辑,而是把请求的查询参数写入Azure Storage Queue。然后新建一个Queue触发的Function,在host.json里配置extensions.queues.batchSize和extensions.queues.newBatchThreshold为1,限制它的并发数为1。Queue触发的Function会逐个取出消息处理,天然串行,而且还能自动重试失败的请求,避免丢数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:31:06