c# - azure 函数计时器触发器中的 TimerInfo 类有哪些具体细节?

标签 c# .net azure azure-functions

我能找到的唯一文档是here但它并没有真正解释 TimerInfo 类的属性。我有一些问题

  • 函数扩展是否使用 Azure 存储来保存上次触发函数的时间,并将其与当前执行时间进行比较,以查看是否错过了执行并将 IsPastDue 设置为 true?
  • 如果函数延迟几秒或几毫秒触发,或者仅在完全错过执行时,IsPastDue 是否会设置为 true?
  • ScheduleStatus.Last 是上次触发的时间还是只是根据 cron 表达式计算出来的?
  • ScheduleStatus.LastUpdated 是什么,是我上次更改 cron 表达式的时间吗?
  • 什么是Schedule.GetNextOccurrence,如果我传递DateTime.Now,它返回的结果与ScheduleStatus.Next相同

最佳答案

经过一些测试并阅读源代码后,这是我对其功能的总结。我将解释当 UseMonitor 设置为 true 时它会做什么。

当函数主机启动时,它会检查 Azure 存储以了解上次执行触发器的情况。如果它从未执行过,它将根据您的 cron 表达式等待下一个计划的发生。如果之前已经执行过,则会将上次执行时间与当前时间进行比较,看看是否错过了任何执行。如果它确实错过了任何一个,它会立即执行您的函数并将 IsPastDue 传递为 true。然后它继续按正常时间表执行。

ScheduleStatus.Last:

  • 首次运行时将设置为default(DateTime)
  • 如果逾期,这将是您的函数最后一次实际执行的时间
  • 否则,它是最后一次执行的时间,四舍五入到最接近的计划执行

ScheduleStatus.Next:

  • 下一个计划的执行时间,通常大约是当前时间,除非执行已过期,在这种情况下,它会是过去的时间。

ScheduleStatus.LastUpdated:

  • 据我所知,这与 ScheduleStatus.Last 相同,只是如果是第一次执行,它将是 default(DateTime)

关于c# - azure 函数计时器触发器中的 TimerInfo 类有哪些具体细节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63456649/

相关文章:

c# - Entity Framework 的奇怪之处——一列是错误的

c# - IOS sha1错误输出

java - 有效地在不同的虚拟机之间复制对象

.net - 如何将我的 Web 应用程序与另一个 IM 系统的 Skype、Gtalk 集成?

c# - Crystal Report 在查看报告之前验证数据库凭据

c# - 尝试同步调用 Async 方法。它永远等待 Task.Result

asp.net - 从 WebAppService 访问 Azure 文件共享

Azure 数据工厂将 2 列映射到一列中

c# - 如何将从套接字接收到的字节数组转换为 C# 结构

azure - 如何使用 Terraform 创建 Azure VNET 时添加多个地址空间