新增 批量插入队列接口

This commit is contained in:
小肥羊 2025-10-27 10:23:47 +08:00
parent 5a6dc49615
commit d5a1da1040
2 changed files with 20 additions and 7 deletions

View File

@ -70,7 +70,7 @@ namespace VideoAnalysisCore.Common
/// <summary>
/// 任务对象地址
/// </summary>
public static string Task(object taskId) => BaseKey + "Task:" + taskId;
public static string Task(object taskId) => BaseKey + "TaskInfo:" + taskId;
public static string IDTask => BaseKey + "Services:" + AppCommon.Config.ID;
public static string TaskGPT(object taskId) => Task(taskId) + ":GPTCached";
/// <summary>
@ -179,7 +179,7 @@ namespace VideoAnalysisCore.Common
/// <param name="taskId"></param>
public void SetTaskGPTCached(object taskId, string time, object? data)
{
Redis.Set(RedisExpandKey.TaskGPT(taskId) + ":" + time, data, 3600 * 24);
Redis.Set(RedisExpandKey.TaskGPT(taskId) + ":" + time, data, timeoutSeconds: 3600 * 24);
}
/// <summary>
/// 加入到消费队列
@ -224,6 +224,9 @@ namespace VideoAnalysisCore.Common
if (taskId is null) throw new Exception("taskId为空");
if (Redis is null) throw new Exception("redis未初始化");
//设置任务Redis缓存过期时间
Redis.Expire(RedisExpandKey.Task(taskId), 60 * 60 * 24 * 14);
var startTime = Redis.HMGet<Dictionary<RedisChannelEnum, DateTime>>(RedisExpandKey.Task(taskId), "StartTime").FirstOrDefault();
if (startTime is null)
startTime = new Dictionary<RedisChannelEnum, DateTime>();

View File

@ -19,6 +19,7 @@ using VideoAnalysisCore.Common.Expand;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
using VideoAnalysisCore.Model.;
using VideoAnalysisCore.Model.Interface;
namespace VideoAnalysisCore.Controllers
{
@ -76,9 +77,22 @@ namespace VideoAnalysisCore.Controllers
#endif
/// <summary>
/// 插入批量任务id
/// </summary>
/// <param name="ids">是否执行任务</param>
/// <returns></returns>
[HttpPost(Name = "JoinQueue")]
public IActionResult JoinQueue(long[] ids)
{
if ( ids == null || ids.Count()==0)
return BadRequest("录入数据无效");
redisManager.JoinQueue(ids);
return Ok();
}
/// <summary>
/// ³õʼ»¯Ö÷¿â±í
/// 当前消费者 继续执行任务
/// </summary>
/// <param name="task">是否执行任务</param>
/// <returns></returns>
@ -204,11 +218,7 @@ namespace VideoAnalysisCore.Controllers
VideoType=req.VideoType
};
//入库
var hashEntries = task.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.ToDictionary(s => s.Name, s => s.GetValue(task));
await videoTaskDB.InsertAsync(task);
redisManager.Redis.HMSet(RedisExpandKey.Task(task.Id), hashEntries);
redisManager.Redis.LPush(RedisExpandKey.ChannelKey, task.Id);
return Ok(task.Id);
}