当前位置: 首页 > 知识库问答 >
问题:

Cosmos db 更改源触发器在函数进入睡眠状态后未触发

殳阳飙
2023-03-14

我有一个在本地运行良好的函数,但在Azure中不会触发,除非该函数是“唤醒”的。该函数只是将项从一个容器复制到另一个容器,主键和id列交换(作为最终一致的辅助索引)。该应用程序中有两个函数,都是Cosmos触发器(不同的源容器和租约前缀);我的所有其他功能都在其他应用程序中。

该函数在Linux消耗计划中,通过GitHub ActionAzure/functions-action@v1部署,该操作使用zip部署,应该是同步触发器。没有其他函数侦听该容器(本地实例侦听模拟器),并且该函数无论如何都有一个唯一的租赁前缀。

如果我在门户中查看函数应用(甚至只是“概述”页),则函数会“唤醒”并处理所有 Cosmos DB 项。如果我随后关闭“概述”页,等待约 30 分钟,然后更改监视容器中的项,则不会触发该函数。Azure Monitor 日志中没有任何内容,目标容器中的相应项也不会更改。我可以等待几 (10) 分钟并刷新,但日志或目标容器中仍然没有任何内容。然后,当我重新打开“概述”页面时,该函数立即触发,并且目标容器中的项目几乎立即更新;Azure Monitor 日志会在 2-3 分钟后显示(正常延迟量)。此行为是 100% 可重复的。

我已经多次检查了所有的故障排除建议,但是我没有看到任何有用的东西。

如何在门户中不观察的情况下触发此函数?

共有1个答案

陶宜民
2023-03-14

事实证明,我的连接字符串有误。我在ConnectingStrings中有CosmosDb触发器连接字符串,而它应该在AppSettings中。

该函数实际上可以在本地工作(并且如果它已经在云中运行),因为绑定在两个位置查找:AppSettings在它应该在的地方,并回退到ConnectionStrings。但是,当函数“睡眠”时,Azure 缩放控制器只是在监视 AppSettings,因此它永远不会唤醒的原因。

 类似资料:
  • 问题内容: 我试图弄清楚为什么没有触发我。这是相关控制器的片段: 在我看来,显然是正确更新的,因为我的长度范围是这样的: 我想念什么? 问题答案: 尝试或。 默认情况下,$ watch 不检查对象是否相等,而仅作为参考。因此,将总是简单地返回相同的数组引用,并且不会改变。 更新: Angular v1.1.4添加了一个$ watchCollection() 方法来处理这种情况: Shallow监视

  • 问题内容: 我有产生新线程的执行主线程。在main()的执行主线程中,我正在调用。何时获得 未处理的异常 类型? 我不确定为什么会得到这个。我以为这是因为我需要对主线程的引用,所以我继续并通过进行了引用。 这不是让线程休眠的方法吗?我需要做的是让主线程等待/睡眠/延迟,直到它再次需要工作为止。 问题答案: 您看到的是编译错误,原因是您没有正确处理检查的异常(在这种情况下)。处理意味着执行以下操作之

  • 问题内容: 我想让系统进入睡眠或hibernate状态,这是两种不同的选择。 我将如何使用API​​进行此操作,我真的不想使用Process,并且这不允许我选择执行此操作所需的方法。 问题答案: 或者,如果您喜欢系统调用:

  • 我将JSON文档上传到Azure Blob容器中,并编写了Azure Python函数将JSON写入CosmosDB。触发工作正常,但我出错了。下面是Python函数: 以下是function.json文件: 这是我在Azure门户中看到的错误: 结果:失败异常:函数加载错误:无法加载JsonBobTrigger1函数:以下参数在Python中声明,但在function.json中没有声明:{'d

  • 我的Azure Functions事件网格触发器没有触发。我是这么做的。 Key Vault设置为将事件报告给EventGrid系统主题 此主题由将事件传递到Azure Function的订阅订阅 函数有一个事件网格触发器(见下文,默认由门户创建): 我用谷歌搜索了一下,对于这样的入门级方案,没有更多的指导。我想的也许是授权...订阅如何触发该函数?在此过程中(通过GUI /门户配置),没有任何关

  • 我有一个状态机,有三种可能的状态:状态1,状态2,状态3。 每当一个对象进入状态_3时,我想触发一个事件event1。 在我state_machine,我有 但只要状态从state1更改为state3或从state2更改为state3,就会正确触发事件。但当状态从state3转换到state3时,不会触发event1。我怎样才能做到这一点? 我知道从3号州到3号州不是一个州的过渡。我可以使用类似于