This commit is contained in:
81
server/generator/Generate.cs
Normal file
81
server/generator/Generate.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System.Threading;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Sockeye.Biz;
|
||||
using Sockeye.Util;
|
||||
|
||||
namespace Sockeye.Generator
|
||||
{
|
||||
//Implemented from a example here
|
||||
//https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice
|
||||
|
||||
/*
|
||||
LOOKAT: Generator tasks that should happen:
|
||||
- Periodically erase any temp files written to userfiles root (attachments temp files) that are older than a day
|
||||
- These files should be normally erased within seconds after uploading and processing into their permanent folder but shit will go wrong
|
||||
*/
|
||||
|
||||
public class GeneratorService : BackgroundService
|
||||
{
|
||||
private readonly ILogger<GeneratorService> log;
|
||||
// private const int MAXIMUM_MS_ALLOWED_FOR_PROCESSING_ALL_JOBS = 1 * 60 * 1000;//1 minutes TEST TEST TEST #####
|
||||
// #if (DEBUG)
|
||||
// private const int GENERATE_SECONDS = 1;
|
||||
// #else
|
||||
// private const int GENERATE_SECONDS = 20;
|
||||
// #endif
|
||||
|
||||
|
||||
|
||||
|
||||
public GeneratorService(ILogger<GeneratorService> logger)
|
||||
{
|
||||
log = logger;
|
||||
}
|
||||
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
|
||||
log.LogInformation($"GeneratorService is starting.");
|
||||
|
||||
stoppingToken.Register(() =>
|
||||
log.LogDebug($" GeneratorService background task is stopping."));
|
||||
|
||||
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
if (!ServerGlobalOpsSettingsCache.BOOTING)
|
||||
{
|
||||
// log.LogTrace($"GeneratorService running jobs");
|
||||
|
||||
//=================================================================
|
||||
try
|
||||
{
|
||||
await JobsBiz.ProcessJobsAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
log.LogError(ex, "Generate::ProcessJobs result in exception error ");
|
||||
}
|
||||
//=================================================================
|
||||
}
|
||||
//There *MUST* be a delay here or the server will come to a standstill
|
||||
//ideally need to move on from this method of generation to something external or more reasonable but
|
||||
//this does work, we need to get to release, for our projected use load this should be fine and it's
|
||||
//a documented by MS method to do asp.net core job processing
|
||||
//https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-6.0&tabs=visual-studio
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
log.LogInformation($"GeneratorService is stopping");
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
log.LogDebug($"GeneratorService StopAsync triggered");
|
||||
return Task.FromResult(0);
|
||||
// Run any needed clean-up actions
|
||||
}
|
||||
}//eoc
|
||||
}//eons
|
||||
Reference in New Issue
Block a user