错误:4 DEADLINE_EXCEEDED:在 Object.exports.createStatusError 处超出截止日期 - GCP

nas*_*saa 9 google-cloud-platform google-cloud-functions

我正在尝试从我的 Google Cloud Functions 之一创建 Google Cloud 任务。当一个新对象添加到我的一个 Cloud Storage 存储桶时,会触发此函数。

我按照此处给出的说明创建了我的 App Engine(App Engine 快速入门指南

然后在我的 Cloud Functions 中,我添加了以下代码来创建一个云任务(如此处所述 -创建 App Engine 任务

但是,我的任务或 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' }
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我,我会将它们添加到此问题中。

小智 13

我在 firestore 上也遇到了同样的问题,试图一次写一篇文档;我通过返回总承诺来解决这个问题。这是因为云函数需要知道何时方便终止该函数,但如果不返回任何内容可能会导致此错误。

我的例子:

data.forEach( d => {
       reports.doc(_date).collection('data').doc(`${d.Id}`).set(d);
    }) 
Run Code Online (Sandbox Code Playgroud)

这就是我的问题,我正在一份一份地写文档,但我没有兑现承诺。所以我这样做解决了这个问题:

const _datarwt = [];

data.forEach( d => {
          _datarwt.push( reports.doc(_date).collection('data').doc(`${d.Id}`).set(d) );
        }) 
const _dataloaded = await Promise.all( _datarwt );
Run Code Online (Sandbox Code Playgroud)

我将返回的承诺保存在数组中并等待所有承诺。这为我解决了。希望有帮助。