如何从已完成的谷歌云任务队列中提取统计信息?

问题描述 投票:0回答:1

我正在尝试弄清楚如何从过去的 Google Cloud 任务队列中提取以下统计信息,该队列可能已完成按日期过滤的执行?我每周周一、周三、周五都会运行一个队列,每次队列完成后我都需要获得一些有用的统计数据...

  • 已派发任务数
  • 成功派发任务数(200状态码)
  • 不成功分派任务的数量(意味着任务的所有重试均失败)
  • 时间戳队列执行开始
  • 时间戳队列完成

Node.js 解决方案或使用 google cloud cli 都可以。

我只能找到这个文档: https://googleapis.dev/nodejs/tasks/3.0.2/google.cloud.tasks.v2beta2.QueueStats.html

但这不是我真正需要的..

或者,我猜解决方案是当队列中没有更多任务时触发 webhook 事件。这也可以工作,我只需将各个请求记录到数据库表中,然后一旦队列完成,我就可以从数据库中提取我需要的数据。因此,当谷歌云平台的给定队列中没有更多任务时,如何配置 webhook 事件的说明也是一个可接受的答案。

google-cloud-tasks
1个回答
0
投票

(“但这不是我真正需要的......”意味着什么?)无论如何,在node.js中使用云API,所以类似于:

const { CloudTasksClient } = require('@google-cloud/tasks');
const client = new CloudTasksClient();
    
const queueName = 'projects/YOURPROJECTID/locations/YOURLOCATION/queues/YOURQUEUE';
const dateFilter = 'execution time range';
    
exports.getTaskStats = async (req, res) => {
    const [response] = await client.listTasks({parent: queueName});
    const tasks = response.tasks;
            
    const dispatchedTasks = tasks.length;
    const successfulTasks = tasks.filter(task => task.status.code === 200).length;
    const unsuccessfulTasks = tasks.filter(task => task.retries === 0).length;
    
    const queueFinishedDts = new Date();
    
    return res.send({
         dispatchedTasks,
         successfulTasks,
         unsuccessfulTasks,
         queueFinishedDts
    });
};

然后在需要的地方使用结果。

© www.soinside.com 2019 - 2024. All rights reserved.