Google Cloud功能需要很长时间

时间:2017-04-01 14:51:31

标签: javascript firebase quota timeoutexception google-cloud-functions

我刚开始使用谷歌云功能。他们表现得很奇怪(或者我做错了事)。 我有以下功能,一旦用户评价一些项目

,就会重新计算平均评分
exports.onItemRated = functions.database.ref('/votes_history/{rankingId}/current/{itemId}').onWrite(event => {

const ranks = event.data.val();
const itemId = event.params.itemId;
const rankingId = event.params.rankingId;

let avg = 0;
let num = 0;
Object.keys(ranks).forEach( (rankerId) => { //sum up all ratings for the item
    avg += ranks[rankerId];
    num ++;
});

avg /= num;

return admin.database().ref(`averages/${rankingId}/${itemId}`).transaction( (curVal) => {
    return {avg, num};
});
}

我在极少量的数据上测试它。赞3个评分。所以,我相信,应该没有什么需要花费很长时间。但是,这是日志: Function logs

我的"结算帐户未配置确实如此。外部网络无法访问,配额严重受限。配置结算帐户以删除这些限制"。 我想弄清楚的是 - 我的功能是否存在问题,或者只是限制。如果有人可以解释这些限制是如何起作用的话也会很棒。

=== UPDATE ===

感谢Cloud Functions for Firebase onWrite timeout设法通过将事务包装到自己的Promise来解决超时问题。看起来它是一个错误。

然而,即使现在功能执行时间也非常不可预测。不像以前那么疯狂,但仍然是50毫秒(完美)到2k + ms。我不明白为什么会有这么大的差异。什么甚至可能是该功能执行2000毫秒的原因?

0 个答案:

没有答案