EventGridtriggered,Python Azure函数在成功运行后是否继续触发?

2024-09-30 06:29:29 发布

您现在位置:Python中文网/ 问答频道 /正文

还有一些其他的主题,但是没有一个是关于解决方案的,也没有一个是关于Python函数的

背景:

  • EventGrid触发,Python Azure函数
  • 仅当blob上载到给定存储帐户时创建的EventGrid消息
  • 函数接收消息,从消息URL下载blob并执行“填充”
  • 该功能可运行数秒/分钟(对于大水滴,最多可运行120秒)

问题示例:

  • 4个文件上载到正确存储帐户中的blob容器
  • 函数通过4条单独的EventGrid消息成功触发4次
  • 函数从每条消息的URL下载blob,执行“填充”
  • 约55秒后,又有4条EventGrid消息再次触发该函数(对于相同的4个文件!)
  • 一切都在重复

这会发生多次,导致对4个文件执行12个函数:

  • 以及相应的输出来自函数所做的“填充”

enter image description here

当2500个文件被上传到存储帐户时,它变得可笑了

似乎我需要调整EventGrid重试时间。但我在门户中没有看到此设置:

enter image description here

如何防止这种行为?

编辑1:然后今天。。。上传16个文件没有问题。。。为什么EventGrid会不一致地触发此函数

enter image description here

编辑2:今天再次。。。毫无理由,~一小时后。。。EventGrid触发了更多的触发器,尽管没有更多的文件上传到存储帐户

enter image description here

以下是正在上载到存储帐户的16个文件的EventGrid统计信息。

  • 你可以清楚地看到数字到处都是,在某些情况下,重试间隔约1小时
  • 在我看来很随意

enter image description here

编辑3:任何感兴趣的人


Tags: 文件函数event消息url编辑情况帐户
1条回答
网友
1楼 · 发布于 2024-09-30 06:29:29

根据doc,订阅者(如EventGridTrigger函数)需要在30秒内将响应发送回AEG,否则消息将排队等待重试

请注意,当AEG在3分钟内收到来自传递目标端点(订户)的成功响应时,该事件将从重试队列中删除。如果启用死信功能,则当响应失败代码为400或413时,事件也将从重试队列中删除

基于上述情况和您长期运行的订户,AEG在3分钟内发送了一个重复事件

我建议在解决方案中使用推拉模式,例如将事件传递到存储队列

相关问题 更多 >

    热门问题