using System.Diagnostics;
using Dpz.Core.Service.ObjectStorage.Services;
using Hangfire;
using JetBrains.Annotations;
namespace Dpz.Core.Web.Jobs.Hangfire;
/// <summary>
/// COS 空目录清理任务执行器
/// </summary>
[UsedImplicitly]
public class CosDirectoryCleanupActivator(
IObjectStorageOperation objectStorageOperation,
ILogger<CosDirectoryCleanupActivator> logger
) : JobActivator
{
/// <summary>
/// 清理云储存中没有文件的空目录
/// </summary>
[ProlongExpirationTime]
[DisableConcurrentExecution(3600)]
public async Task CleanEmptyDirectoriesAsync()
{
using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(60));
var cancellationToken = cancellationTokenSource.Token;
var stopwatch = Stopwatch.StartNew();
var deletedCount = await objectStorageOperation.CleanEmptyDirectoriesAsync(
cancellationToken: cancellationToken
);
stopwatch.Stop();
logger.LogInformation(
"COS 空目录清理任务完成,删除 {DeletedCount} 个空目录,耗时:{ElapsedMilliseconds}ms",
deletedCount,
stopwatch.ElapsedMilliseconds
);
}
}
AI 正在分析代码…
评论加载中...