我正在尝试从我的Google云功能之一创建Google Cloud任务。将新对象添加到我的一个云存储桶中时,将触发此功能。
我按照此处给出的说明创建了我的应用引擎-https://cloud.google.com/tasks/docs/quickstart-appengine
然后在我的云功能中,添加了以下代码以创建云任务(如此处所述-https://cloud.google.com/tasks/docs/creating-appengine-tasks)
但是,我的任务或App Engine调用有问题(不确定是什么原因)
我时不时地遇到以下错误。有时会起作用,有时却不起作用-
{ Error: 4 DEADLINE_EXCEEDED: Deadline Exceeded at Object.exports.createStatusError (/srv/node_modules/grpc/src/common.js:91:15) at Object.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:1204:28) at InterceptingListener._callNext (/srv/node_modules/grpc/src/client_interceptors.js:568:42) at InterceptingListener.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:618:8) at callback (/srv/node_modules/grpc/src/client_interceptors.js:845:24) code: 4, metadata: Metadata { _internal_repr: {} }, details: 'Deadline Exceeded' }
如果您需要更多信息,请告诉我,我将在此处将其添加到此问题中。
答案 0 :(得分:1)
我在firestore中遇到了同样的问题,试图一次编写一份文档;我通过退还全部承诺来解决这一问题。那是因为云函数需要知道何时方便终止函数,但是如果不返回任何内容,可能会导致此错误。
我的例子:
data.forEach( d => {
reports.doc(_date).collection('data').doc(`${d.Id}`).set(d);
})
这是我的问题,我正在1比1编写文档,但没有兑现承诺。所以我解决了这个问题:
const _datarwt = [];
data.forEach( d => {
_datarwt.push( reports.doc(_date).collection('data').doc(`${d.Id}`).set(d) );
})
const _dataloaded = await Promise.all( _datarwt );
我将返回的诺言保存在数组中,并等待所有诺言。那为我解决了。希望对您有所帮助。
答案 1 :(得分:0)
可能由于某些Cloud Functions配额限制或Google Cloud Task配额限制而发生了“超过最后期限”
请参见:https://cloud.google.com/functions/quotas和此:https://cloud.google.com/tasks/docs/quotas
如果您在日志记录中查找超出配额的情况,也许可以找到有关它的更多信息。
或者您可以尝试更改Cloud Pub/Sub的云任务