エラーコード16およびエラー:4 DEADLINE_EXCEEDED with PubSub Firestore Function

ミゲルチャベス

毎日のスケジュールされた機能でこの2つのエラーが発生しています。毎日、給料日かどうかを確認し、各ユーザーの負債に対応する金額を追加しようとしています。

Error: Process exited with code 16
at process.on.code (invoker.js:271)
at process.emit (events.js:198)
at process.EventEmitter.emit (domain.js:448)
at process.exit (per_thread.js:168)
at Object.logAndSendError (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/logger.js:37)
at process.on.err (invoker.js:268)
at process.emit (events.js:198)
at process.EventEmitter.emit (domain.js:448)
at emitPromiseRejectionWarnings (internal/process/promises.js:140)
at process._tickCallback (next_tick.js:69)

そして:

Error: 4 DEADLINE_EXCEEDED: Deadline exceeded
at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:30)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:175)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:341)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:304)
at Http2CallStream.outputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:116)
at Http2CallStream.maybeOutputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:155)
at Http2CallStream.endCall (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:141)
at Http2CallStream.cancelWithStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:457)
at Timeout.DeadlineFilter.timer.setTimeout (deadline-filter.js:59)
at ontimeout (timers.js:436)

これは私の機能です:

「firebase-functions」から関数として*をインポートします。import * as admin from "firebase-admin";

/// Checks every day if the debt pay day is equal to the setting and add the corresponding amount to the debt

export const checkForMonthChange = functions.pubsub
  .schedule("every day 00:00")
  .onRun(async (context) => {
    try {
      const db = admin.firestore();
      const dayOfMonth = admin.firestore.Timestamp.now().toDate().getDate();
      const neighborhoods = await db.collection("_settings").get();
      const promises = [];

      neighborhoods.forEach(async (doc) => {
        const dayToPay = doc.data().day_of_month_to_pay;

        if (dayOfMonth === dayToPay) {
          const neighborhoodToUpdateName = doc.ref.id;
          const neighborhoodToUpdate = await db
            .collection(neighborhoodToUpdateName)
            .get();

          neighborhoodToUpdate.forEach(async (neighbor) => {
            const userPlan = await neighbor.data().plan;
            const amountToAdd = (
              await db
                .collection("_settings")
                .doc(neighborhoodToUpdateName)
                .collection("payment_plans")
                .doc(userPlan)
                .get()
            ).data().monthly_pay;
            console.log(userPlan);
            console.log(amountToAdd);

            promises.push(
              neighbor.ref.update({
                debt: neighbor.data()?.debt + amountToAdd,
              })
            );
          });
        }
      });

      if (Promise.all.length !== 0) {
        console.log(`Debt Increased Day of Month: ${dayOfMonth}`);
        return Promise.all(promises);
      } else {
        return null;
      }
    } catch (error) {
      console.log(`Error in every day schedule: ${error}`);
    }
  });

私が間違っていることは何ですか?

編集:コンソールにこれらの2つのログが表示されています

console.log(userPlan);
console.log(amountToAdd);

前もって感謝します

ダグスティーブンソン

awaitforEachラムダ関数内での使用は、期待どおりに機能しません。ループの実行を一時停止することはありません。今のように、forEachループは、近隣ごとに1回ずつ、すぐに何度も実行されます。コードはpromises(ループが実行される前に)配列をチェックし続けます。配列は常に空になります。

forEachループ内のすべての非同期作業が実際に完了した後にのみ解決されるpromiseをコードが返すことを確認する必要があります。それについての完全な議論については、この他の質問参照してくださいこの問題は、forEachが非同期として宣言された関数を受け入れ、すぐにpromiseを返すという事実によるものです。

または、forEachの使用を避け、代わりに、より大きい関数の非同期コンテキストでコードを実行するforループを使用して、期待どおりにawaitを使用することもできます。

for (const doc of neighborhoods.docs) {
    // use await here to pause the entire function
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デプロイしようとするたびに、-(gcloud.preview.app.deploy)エラー応答:[4] DEADLINE_EXCEEDED

分類Dev

Go BigqueryのDEADLINE_EXCEEDED

分類Dev

com.google.cloud.spanner.SpannerException:DEADLINE_EXCEEDED

分類Dev

Webhook call failed. Error: DEADLINE_EXCEEDED | Request timed out

分類Dev

pubsub xmppsmackライブラリのカスタムペイロードを公開および解析する方法

分類Dev

クラスター化されたejabberd用のMUCおよびPubSubホスト

分類Dev

Flutter Firebase firestore .data [""]エラー

分類Dev

エラー:更新するエンティティがありません:アプリ-Firestore Cloud Function

分類Dev

Firebaseトリガー/ PubSub / MongoDB

分類Dev

update not a function - firebase firestore

分類Dev

Firestoreでデータをクエリおよび更新する方法

分類Dev

Googlepubsubエラーgoogle / pubsub / v1 /pubsub.protoが/ protosに見つかりませんでした

分類Dev

constクラスオブジェクトをstd :: functionおよびstd :: bindに渡すとコンパイルエラーが発生します

分類Dev

Firestoreエラー「DeadlineExceeded」を使用したクラウド関数

分類Dev

Firestore(4.13.0):内部の未処理エラー

分類Dev

Flutter Cloud Firestore Map <String、dynamic>エラー

分類Dev

GCP PubSubとSpring Bootで発行エラーをキャッチする

分類Dev

クエリ パラメータにアクセスする Google Cloud PubSub

分類Dev

Firestoreエラー 'コントローラー!= null':真ではありません

分類Dev

Pythonで[タイプエラー:+ =のサポートされていないオペランドタイプ: 'builtin_function_or_method'および 'str']エラーを修正する方法

分類Dev

ビルド時のFirebaseFirestoreエラー:「firebase :: firestore :: util :: FormatArg」のコンストラクターの呼び出しがあいまいです

分類Dev

ログインによるFirebase + Firestoreエラー

分類Dev

Firestoreに接続しようとした後のAndroidJavaエラー

分類Dev

GCloud pubsubエミュレーターは、「PUBSUB_EMULATOR_HOST」環境変数を尊重しません

分類Dev

エラーfunction_clause?

分類Dev

fopen()[function.fopen]エラー

分類Dev

Firestore getDocumentsSource.cacheおよびindex-オフラインクエリ

分類Dev

function1を呼び出す|| function2構文エラー

分類Dev

Firestore依存関係エラーフラッター

Related 関連記事

  1. 1

    デプロイしようとするたびに、-(gcloud.preview.app.deploy)エラー応答:[4] DEADLINE_EXCEEDED

  2. 2

    Go BigqueryのDEADLINE_EXCEEDED

  3. 3

    com.google.cloud.spanner.SpannerException:DEADLINE_EXCEEDED

  4. 4

    Webhook call failed. Error: DEADLINE_EXCEEDED | Request timed out

  5. 5

    pubsub xmppsmackライブラリのカスタムペイロードを公開および解析する方法

  6. 6

    クラスター化されたejabberd用のMUCおよびPubSubホスト

  7. 7

    Flutter Firebase firestore .data [""]エラー

  8. 8

    エラー:更新するエンティティがありません:アプリ-Firestore Cloud Function

  9. 9

    Firebaseトリガー/ PubSub / MongoDB

  10. 10

    update not a function - firebase firestore

  11. 11

    Firestoreでデータをクエリおよび更新する方法

  12. 12

    Googlepubsubエラーgoogle / pubsub / v1 /pubsub.protoが/ protosに見つかりませんでした

  13. 13

    constクラスオブジェクトをstd :: functionおよびstd :: bindに渡すとコンパイルエラーが発生します

  14. 14

    Firestoreエラー「DeadlineExceeded」を使用したクラウド関数

  15. 15

    Firestore(4.13.0):内部の未処理エラー

  16. 16

    Flutter Cloud Firestore Map <String、dynamic>エラー

  17. 17

    GCP PubSubとSpring Bootで発行エラーをキャッチする

  18. 18

    クエリ パラメータにアクセスする Google Cloud PubSub

  19. 19

    Firestoreエラー 'コントローラー!= null':真ではありません

  20. 20

    Pythonで[タイプエラー:+ =のサポートされていないオペランドタイプ: 'builtin_function_or_method'および 'str']エラーを修正する方法

  21. 21

    ビルド時のFirebaseFirestoreエラー:「firebase :: firestore :: util :: FormatArg」のコンストラクターの呼び出しがあいまいです

  22. 22

    ログインによるFirebase + Firestoreエラー

  23. 23

    Firestoreに接続しようとした後のAndroidJavaエラー

  24. 24

    GCloud pubsubエミュレーターは、「PUBSUB_EMULATOR_HOST」環境変数を尊重しません

  25. 25

    エラーfunction_clause?

  26. 26

    fopen()[function.fopen]エラー

  27. 27

    Firestore getDocumentsSource.cacheおよびindex-オフラインクエリ

  28. 28

    function1を呼び出す|| function2構文エラー

  29. 29

    Firestore依存関係エラーフラッター

ホットタグ

アーカイブ