gpt4 book ai didi

python - "initialize_app ' 默认的 Firebase 应用已经存在。”云函数发布订阅

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:26 28 4
gpt4 key购买 nike

我正在 Google Cloud(云函数内联编辑器)上编写一个发布子函数,每半小时触发一次,它使用 firestore。由于某种原因,该函数在第一次运行时会正常触发,但之后不断弹出以下错误:

in initialize_app 'The default Firebase app already exists. This means you 
called ' ValueError: The default Firebase app already exists. This means you
called initialize_app() more than once without providing an app name as the
second argument. In most cases you only need to call initialize_app() once.
But if you do want to initialize multiple apps, pass a second argument to
initialize_app() to give each app a unique name.

我之前在使用两个应用程序时遇到过此错误,但此功能仅使用一个 firebase 应用程序。这是我怀疑是问题所在的代码部分: p>

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

def hello_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
fire = {<My firebase credentials>}
cred = credentials.Certificate(fire)
default_app = firebase_admin.initialize_app(cred)
db = firestore.client()
........

我认为问题正是错误所说的,我没有声明应用程序的名称,所以我尝试了这个(连同其他尝试):

default_app = firebase_admin.initialize_app(cred,'App')
# other attempt
default_app = firebase_admin.initialize_app()

这仍然行不通。同样,这在第一次触发函数时有效,但之后它会不断崩溃。

有什么建议吗?

感谢您的帮助!

最佳答案

由于这是一个云函数,您不需要使用凭据,该函数将从环境中获取凭据。我建议为此更改您的功能:

import firebase_admin
from firebase_admin import firestore

firebase_admin.initialize_app()
db = firestore.client()


def hello_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
# Do your things

在部署前使用您的功能时使用凭据,然后在部署时删除凭据部分,因为您不需要它。

此外,如果除了导入 firestore 之外不需要 firebase_admin,则可以跳过初始化 firebase_app 并像这样单独使用 firestore:

import base64

from google.cloud import firestore

db = firestore.Client()


def hello_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
# Do your things

请注意 Firebase firestore 客户端和 google-cloud firestore 客户端之间的区别是“大写 C”,您必须在您的机器中安装 firestore python 库开发、测试和修改您的 requirements.txt

关于python - "initialize_app ' 默认的 Firebase 应用已经存在。”云函数发布订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676296/

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