修改生图包任务轮询方法 请求任务方法

This commit is contained in:
lq1405 2025-06-21 14:41:21 +08:00
parent b5ed6a3b1c
commit 6f580ff8eb
3 changed files with 33 additions and 6 deletions

View File

@ -20,7 +20,7 @@ namespace LMS.Tools.MJPackage
public async Task Execute(IJobExecutionContext context)
{
_logger.LogInformation($"开始检查TASK信息 - 检查间隔: 5 分钟,同步加载 原始请求的Token");
_logger.LogInformation($"开始检查TASK信息 - 检查间隔: 20 秒,同步加载 原始请求的Token");
var startTime = BeijingTimeExtension.GetBeijingTime();
try
@ -35,7 +35,7 @@ namespace LMS.Tools.MJPackage
// 检查Task状态和返回值
// 获取所有超过五分钟没有完成的人物
List<MJApiTasks> tasks = await _dbContext.MJApiTasks.Where(t => t.Status != MJTaskStatus.CANCEL && t.Status != MJTaskStatus.SUCCESS && t.Status != MJTaskStatus.FAILURE && t.StartTime < BeijingTimeExtension.GetBeijingTime().AddMinutes(-5)).ToListAsync();
List<MJApiTasks> tasks = await _dbContext.MJApiTasks.Where(t => t.Status != MJTaskStatus.CANCEL && t.Status != MJTaskStatus.SUCCESS && t.Status != MJTaskStatus.FAILURE && t.StartTime < BeijingTimeExtension.GetBeijingTime()).ToListAsync();
if (tasks.Count == 0)
{

View File

@ -108,6 +108,6 @@ public static class QuartzTaskSchedulerConfig
q.AddTrigger(opts => opts
.ForJob(jobKey)
.WithIdentity("FiveMinuteTaskTrigger", "DefaultGroup")
.WithCronSchedule("0 */5 * * * ?", x => x.InTimeZone(timeZone))); // 每5分钟执行一次
.WithCronSchedule("*/20 * * * * ?", x => x.InTimeZone(timeZone))); // 每5分钟执行一次
}
}

View File

@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Net.Sockets;
using System.Text.Json;
using static Betalgo.Ranul.OpenAI.ObjectModels.StaticValues.AssistantsStatics.MessageStatics;
namespace LMS.service.Service.MJPackage
{
@ -32,11 +33,37 @@ namespace LMS.service.Service.MJPackage
return new UnauthorizedObjectResult(new { error = "无效或过期的Token" });
}
// 尝试原始API
// 获取任务
MJApiTasks? mJApiTasks = await _dbContext.MJApiTasks
.Where(t => t.ThirdPartyTaskId == id && t.TokenId == tokenConfig.Id)
.FirstOrDefaultAsync();
if (mJApiTasks == null)
{
return new BadRequestObjectResult(new
{
code = 4,
description = "task_no_found",
type = "upstream_error"
});
}
bool hasProperties = !string.IsNullOrWhiteSpace(mJApiTasks.Properties);
// 判断状态 和 是不是有数据
// 状态不是已完成 并且有数据 直接返回数据库数据 要是已完成 直接就请求原始数据
if (mJApiTasks.Status != MJTaskStatus.SUCCESS && mJApiTasks.Status != MJTaskStatus.CANCEL && mJApiTasks.Status != MJTaskStatus.FAILURE && hasProperties)
{
return new ContentResult
{
Content = mJApiTasks.Properties,
ContentType = "application/json",
StatusCode = 200
};
}
// 尝试备用API防止报错
var originResult = await TryOriginApiAsync(id);
if (originResult != null) return originResult;
// 尝试备用API
var backupResult = await TryBackupApiAsync(id, tokenConfig.UseToken);
if (backupResult != null) return backupResult;
@ -63,7 +90,7 @@ namespace LMS.service.Service.MJPackage
{
mjId = idElementCap.ToString();
}
_logger.LogInformation($"MJNotifyHook: 接收到任务ID {mjId}");
if (string.IsNullOrWhiteSpace(mjId))
{
_logger.LogWarning("MJNotifyHook: 接收到的回调数据中缺少ID");