V 1.1.5 修改并发限制逻辑和位置

This commit is contained in:
lq1405 2025-06-20 19:36:40 +08:00
parent 7f269c8b04
commit b5ed6a3b1c
3 changed files with 18 additions and 24 deletions

View File

@ -61,8 +61,8 @@ namespace LMS.service.Controllers
// 判断请求任务的状态,判断是不是需要释放
if (res.StatusCode != 200 && res.StatusCode != 201)
{
// 释放
_usageTracker.ReleaseConcurrencyPermit(requestToken);
// 标记释放
HttpContext.Items["ReleaseConcurrencyPermit"] = true;
_logger.LogInformation($"请求失败Token并发许可已释放: {token}, 状态码: {res.StatusCode}");
return res;
}
@ -75,22 +75,13 @@ namespace LMS.service.Controllers
description = "提交成功",
result = 1320098173412546
});
if (result == null)
if (result == null || (result.code != 1 && result.code != 22))
{
// 失败
_usageTracker.ReleaseConcurrencyPermit(requestToken);
_logger.LogInformation($"请求失败返回的请求体为空Token并发许可已释放: {token}, 状态码: {res.StatusCode}");
HttpContext.Items["ReleaseConcurrencyPermit"] = true;
_logger.LogInformation($"业务逻辑失败,返回结果为空或者返回请求码不是 1 或 22, 标记释放Token并发许可: {token}");
return res;
}
else
{
if (result.code != 1 && result.code != 22)
{
_usageTracker.ReleaseConcurrencyPermit(requestToken);
_logger.LogInformation($"请求失败code: {result.code}Token并发许可已释放: {token}, 状态码: {res.StatusCode}");
return res;
}
}
// 开始写入任务
await _taskConcurrencyManager.CreateTaskAsync(requestToken, result.result.ToString());

View File

@ -129,20 +129,25 @@ namespace LMS.service.Extensions.Attributes
context.HttpContext.Items["UseToken"] = tokenConfig.UseToken;
context.HttpContext.Items["RequestToken"] = _token;
// 再执行请求之前就新增使用计数,再请求之后,判断是不是成功请求,如果失败就释放
tokenService.IncrementUsage(_token);
// 执行 Action
var executedContext = await next();
// 6. 更新使用计数 (仅成功请求)
if (executedContext.HttpContext.Response.StatusCode < 400)
{
tokenService.IncrementUsage(_token);
// 检查是否需要释放许可
var shouldRelease = executedContext.HttpContext.Items.ContainsKey("ReleaseConcurrencyPermit");
var duration = BeijingTimeExtension.GetBeijingTime() - _startTime;
logger.LogInformation($"请求处理成功: Token={_token}, 状态码={executedContext.HttpContext.Response.StatusCode}, 耗时={duration.TotalMilliseconds}ms");
// 需要释放,直接释放并发许可
if (executedContext.HttpContext.Response.StatusCode >= 400 || shouldRelease)
{
usageTracker.ReleaseConcurrencyPermit(_token);
logger.LogInformation($"请求失败Token并发许可已释放: {_token}, 状态码={executedContext.HttpContext.Response.StatusCode}");
}
else
{
logger.LogWarning($"请求处理失败: Token={_token}, 状态码={executedContext.HttpContext.Response.StatusCode}");
var duration = BeijingTimeExtension.GetBeijingTime() - _startTime;
logger.LogInformation($"请求处理成功: Token={_token}, 状态码={executedContext.HttpContext.Response.StatusCode}, 耗时={duration.TotalMilliseconds}ms");
}
}
catch (Exception ex)

View File

@ -12,13 +12,11 @@ using Microsoft.Extensions.Options;
using Qiniu.Http;
using Qiniu.IO;
using Qiniu.IO.Model;
using Qiniu.RS;
using Qiniu.Util;
using System.Security.Cryptography;
using static LMS.Common.Enums.ResponseCodeEnum;
using static LMS.Repository.DTO.FileUploadDto;
using static LMS.Repository.FileUpload.FileRequestReturn;
using Options = LMS.Repository.DB.Options;
namespace LMS.service.Service.FileUploadService
{