【问题标题】:TimerTrigger Schedules and code execution timeTimerTrigger 计划和代码执行时间
【发布时间】:2016-01-08 21:52:14
【问题描述】:

如果 TimerTigger 每 5 分钟调用一次函数并且由于某些原因代码需要超过 5 分钟才能完成,会发生什么情况?

  • 这是否会导致我的函数同时运行两次?
  • 或者触发的代码执行完成后才开始间隔?

我自己在文档中找不到答案。 我必须确保我的函数始终作为单例运行。

谢谢, 亚历克斯

【问题讨论】:

  • 可能与:stackoverflow.com/questions/29542705/… 相关,看一下,所有 webjobs 在触发器、天蓝色调度程序等中的工作方式相同。无论哪种方式,您都可以制作测试日志数据并插入一些长睡眠/线程等待,然后在 azure 门户中查看 azure webjob 日志

标签: azure-webjobs azure-webjobssdk


【解决方案1】:

如果您的函数执行时间超过计时器间隔,则在当前调用完成之前不会触发另一个执行。 执行完成后安排下一次执行。您可以在代码here 中看到这一点。您可以通过尝试一个简单的本地示例向自己证明这一点 - 创建一个每 5 秒运行一次的函数,并在其中休眠一分钟。在第一个函数完成之前,您不会看到另一个函数开始。

就运行单例而言,上面显示在同一实例 (VM) 上在给定时间仅运行单个函数调用。 SDK 进一步确保没有其他函数在跨横向扩展实例运行。您可以阅读更多关于 here 的信息。要查看实际情况,您可以通过在本地启动控制台应用程序的两个实例来进行模拟 - 一个将运行计划,另一个则不会。但是,如果您杀死运行计划的人,另一个人会在很短的时间(一分钟内)后接手。

【讨论】:

  • 感谢您的精彩回答
  • 如果这完全回答了您的问题,请将其标记为已接受的答案,以便其他人知道,谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 2014-10-14
  • 2012-02-18
  • 2021-07-23
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多