This commit is contained in:
54
server/AyaNova/generator/CoreJobMetricsReport.cs
Normal file
54
server/AyaNova/generator/CoreJobMetricsReport.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using App.Metrics;
|
||||
using AyaNova.Util;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// called by Generator to flush metrics to reporter
|
||||
///
|
||||
/// </summary>
|
||||
internal static class CoreJobMetricsReport
|
||||
{
|
||||
private static TimeSpan DO_EVERY_INTERVAL = new TimeSpan(0, 0, 20);//FLUSH EVERY 20 SECONDS
|
||||
private static DateTime lastReportFlushDone = DateTime.MinValue;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// DoAsync
|
||||
//
|
||||
public static async Task DoJobAsync()
|
||||
{
|
||||
//https://www.app-metrics.io/
|
||||
IMetrics metrics = (IMetrics)ServiceProviderProvider.Provider.GetService(typeof(IMetrics));
|
||||
|
||||
//No more quickly than doeveryinterval
|
||||
if (!DateUtil.IsAfterDuration(lastReportFlushDone, DO_EVERY_INTERVAL))
|
||||
return;
|
||||
|
||||
//RUN ALL REPORTS - FLUSH STATS
|
||||
var mr = (IMetricsRoot)metrics;
|
||||
Task.WaitAll(mr.ReportRunner.RunAllAsync().ToArray());
|
||||
|
||||
lastReportFlushDone = DateTime.UtcNow;
|
||||
|
||||
//just to hide compiler warning for now
|
||||
await Task.CompletedTask;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
}//eoc
|
||||
|
||||
|
||||
}//eons
|
||||
|
||||
Reference in New Issue
Block a user