shuzhiren-comfyui/任务队列后端/outside/callback.js

45 lines
1.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Router } from 'express'
import redis from '../redis/index.js'
import initQueue from '../redis/initQueue.js'
const router = Router()
// 添加API路由来处理文件上传
router.post('/all', async (req, res) => {
// 立即返回响应,避免平台超时
res.status(200).json({ success: true, message: 'Received' });
// // console.log('callback',req.body)
processCallbackData(req.body).catch(error => {
console.error('处理回调数据时出错:', error);
});
})
/**
* 异步处理回调数据
*/
async function processCallbackData(body) {
let remoteTaskId, eventData
remoteTaskId = body.taskId
eventData = body.eventData
// 通过remoteTaskId查询对应的taskId
const taskId = await redis.get(`${initQueue.callback}:${remoteTaskId}`);
if (taskId) {
// 将eventData存储到redis的数据里使用taskId作为键
const taskKey = `${initQueue.prefix}:task:${taskId}`;
await redis.hSet(taskKey, 'resultData', eventData);
// 增加值到回调结果队列列表
await redis.rPush(initQueue.callback, taskId);
await initQueue.addCallbackRQtasks(1);
console.log('taskKey:', taskKey);
console.log('数据已保存到 Redis:', eventData);
} else {
console.error('未找到对应的taskIdremoteTaskId:', remoteTaskId);
// 可以考虑将未找到的remoteTaskId记录下来以便后续分析
await redis.set(`callback:missing:${remoteTaskId}`, JSON.stringify(body), { EX: 86400 }); // 保存24小时
}
}
export default router