我正在尝试弄清楚如何从过去的 Google Cloud 任务队列中提取以下统计信息,该队列可能已完成按日期过滤的执行?我每周周一、周三、周五都会运行一个队列,每次队列完成后我都需要获得一些有用的统计数据...
Node.js 解决方案或使用 google cloud cli 都可以。
我只能找到这个文档: https://googleapis.dev/nodejs/tasks/3.0.2/google.cloud.tasks.v2beta2.QueueStats.html
但这不是我真正需要的..
或者,我猜解决方案是当队列中没有更多任务时触发 webhook 事件。这也可以工作,我只需将各个请求记录到数据库表中,然后一旦队列完成,我就可以从数据库中提取我需要的数据。因此,当谷歌云平台的给定队列中没有更多任务时,如何配置 webhook 事件的说明也是一个可接受的答案。
(“但这不是我真正需要的......”意味着什么?)无论如何,在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
});
};
然后在需要的地方使用结果。