检查Firebase应用程序是否已在python中初始化

sad*_*hna 8 python firebase

我收到以下错误:

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应用程序是否已在python中初始化?

Pan*_*olo 15

最好的方法是控制您的应用工作流程,因此初始化仅调用一次。但是当然,独立代码也是一件好事,因此您可以采取以下操作来避免该错误:

import firebase_admin
from firebase_admin import credentials

if (not len(firebase_admin._apps)):
    cred = credentials.Certificate('path/to/serviceAccountKey.json') 
    default_app = firebase_admin.initialize_app(cred)
Run Code Online (Sandbox Code Playgroud)

  • 是 pythonic:如果不是 firebase_admin._apps: (2认同)

小智 8

我发现以下内容对我有用。

对于默认应用程序:

import firebase_admin
from firebase_admin import credentials

if firebase_admin._DEFAULT_APP_NAME in firebase_admin._apps:
    # do something.
Run Code Online (Sandbox Code Playgroud)

我一直在一个命名应用程序中以这种方式使用它:

import firebase_admin
from firebase_admin import credentials

if 'my_app_name' not in firebase_admin._apps:
    cred = credentials.Certificate('path/to/serviceAccountKey.json')        
    firebase_admin.initialize_app(cred, {
            'databaseURL': 'https://{}.firebaseio.com'.format(project_id),
            'storageBucket': '{}.appspot.com'.format(project_id)}, name='my_app_name')
Run Code Online (Sandbox Code Playgroud)


vin*_*oaj 8

我使用这个 try / except 块来处理应用程序的初始化

try:
    app = firebase_admin.get_app()
except ValueError as e:
    cred = credentials.Certificate(CREDENTIALS_FIREBASE_PATH)
    firebase_admin.initialize_app(cred)
Run Code Online (Sandbox Code Playgroud)

  • 对执行流程使用异常从来都不是正确的答案。第二次初始化的应用程序是一个错误,而不是例外。 (2认同)

Son*_* T. 7

在构造函数中初始化应用程序

cred = credentials.Certificate('/path/to/serviceAccountKey.json')
firebase_admin.initialize_app(cred)
Run Code Online (Sandbox Code Playgroud)

然后在你的方法中你调用

firebase_admin.get_app()
Run Code Online (Sandbox Code Playgroud)

https://firebase.google.com/docs/reference/admin/python/firebase_admin