上一次运行Azure函数

时间:2019-05-01 16:36:32

标签: azure azure-functions

在Visual Studio 2017中,我创建了一个新的Azure Function项目,该项目生成以下代码:

where (department in ('CT', 'NJ', 'NY') and :department = 'NY') or
      (department = :department)

我的问题是关于using System; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; namespace FunctionApp1 { public static class Function1 { [FunctionName("Function1")] public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, TraceWriter log) { var lastRun = myTimer.ScheduleStatus.Last; log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); } } } 变量。是吗?

  1. 该函数最后一次成功运行
  2. 上一次运行该函数的过程,无论成功或失败
  3. 还有其他事情

我搜索了Azure文档,但未能提供有关TimerInfo对象属性的任何信息,因此了解此变量是否可用于了解该函数的最后一次运行时间将很有帮助。

4 个答案:

答案 0 :(得分:0)

TimerInfo.ScheduleStatus.Last

  

获取或设置上一次记录的计划发生时间。

根据Sourcecode on GitHub中的评论。

这并不表示与上次运行的结果有任何关系,所以我认为答案是2:“该函数最后一次运行,无论成功还是失败”。 >

答案 1 :(得分:0)

TimerInfo对象的ScheduleStatus上的“ Last”属性是最后一次触发函数计时器的日期时间,而与函数运行状态是成功还是失败无关。而当计时器触发时,它将触发计时器功能的执行。

答案 2 :(得分:0)

这里是查找上次跑步的示例

log.LogInformation($“计划状态最后:{ myTimer.ScheduleStatus.Last.ToString()}”);

using System;
using System.Reflection;
 
public static void Run(TimerInfo myTimer, ILogger log)
{
   log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
   Type timerInfo = typeof(TimerInfo);
   log.LogInformation("TimerInfo Methods:");
   MethodInfo[] methodInfo = timerInfo.GetMethods();
   foreach (MethodInfo mInfo in methodInfo)
   {
      log.LogInformation($"{mInfo.ToString()}");
   }
   log.LogInformation("TimerInfo Members:");
   MemberInfo[] memberInfo = timerInfo.GetMembers();
   foreach (MemberInfo mbInfo in memberInfo)
   {
      log.LogInformation($"{mbInfo.ToString()}");
   }
   
   log.LogInformation($"Schedule Status Last: {**myTimer.ScheduleStatus.Last.ToString()**}");
   
}

答案 3 :(得分:0)

最好的方法是将函数执行状态存储在其他地方(例如,Redis缓存),所有函数实例都可以引用集中共享的配置。