错误:4 DEADLINE_EXCEEDED:在Object.exports.createStatusError-GCP

时间:2019-03-08 16:30:37

标签: google-cloud-platform google-cloud-functions

我正在尝试从我的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' }

如果您需要更多信息,请告诉我,我将在此处将其添加到此问题中。

2 个答案:

答案 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的云任务