gpt4 book ai didi

firebase - 慢速 firestore runTransaction 调用

转载 作者:行者123 更新时间:2023-12-02 20:22:34 26 4
gpt4 key购买 nike

我目前正在编写一个操作,作为其中的一部分,检查并递增 orderID 值并在对话中使用它进行响应。

该代码目前可以运行,但部分执行可能需要长达 10 秒的时间才能执行,这可能会使 action-on-google 请求超时并失败(并且回复用户的速度也会很慢)。我使用 runTransaction 来确保 firebase 上没有其他函数实例也可以增加 ID。所有函数和值的代码都会增加,但函数响应的延迟意味着它响应的意图超时并给出回退响应。

正如您在下面的代码中看到的,我添加了各种 console.log 来跟踪延迟,它位于 before transaction 之间>transaction started 被输出到控制台,表明发生了 8-10 秒的延迟。谁能说出原因吗?

const functions = require('firebase-functions');
const { dialogflow, Suggestions } = require('actions-on-google');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
const settings = {timestampsInSnapshots: true};
db.settings(settings);

const app = dialogflow();

app.intent('order', (conv, {givenname: givenname}) => {
console.log('starting function');
return new Promise(function(resolvei, rejecti){
if(givenname !== undefined){

console.log('before db.collection');

var idRef = db.collection('orderIDs').doc('opho9peCy54tjLR0YmVm');
console.log('before transaction');
var transaction = db.runTransaction(t => {
console.log('transaction started');
return t.get(idRef)
.then(doc => {
console.log('data gotten');
var id = doc.data().ID + 1;
if(id > 99){
id = 1;
}
t.update(idRef, {ID: id});
console.log('update made');
return Promise.resolve(id);
});
}).then(result => {
console.log(result);
conv.close('Thank you, ' + givenname + '. Your order number is ' + result + '.');
resolvei();
}).catch(err => {
console.log('Transaction failure:', err);
rejecti();
});
}
else{
conv.close('Oops, something has gone wrong, try again.');
resolve();
}
});
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

最佳答案

我注意到,第一次运行部署的函数时,runTransaction 很慢,大约需要 4.5 秒才能完成(即使您没有在事务函数中执行任何工作)。之后,单独 runTransaction 的速度要快得多,并且需要 < 200 毫秒才能完成。这几乎就像您第一次运行新部署的函数时一样,会针对可事务函数进行一些额外的云管理。

关于firebase - 慢速 firestore runTransaction 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com