>

30 분마다 트리거되며 firestore를 사용하는 Google Cloud (클라우드 함수 인라인 편집기)에 펍 하위 함수를 작성하고 있습니다. 어떤 이유로 든 함수는 처음 실행될 때 제대로 트리거되지만 그 후에 다음 오류가 계속 발생합니다.

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.

2 개의 앱을 사용하기 전에이 오류가 발생했지만이 기능은하나의 firebase 앱만 사용합니다.다음은 문제가 의심되는 코드 부분입니다.

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()

그리고 이것은 여전히 ​​작동하지 않습니다. 다시 말하지만, 함수가 처음 트리거 될 때 작동하지만 그 후에는 계속 충돌합니다.

어떤 제안?

도움을 주셔서 감사합니다!

  • 답변 # 1

    이것은 pyzwyz이므로 자격 증명을 사용할 필요가 없습니다.이 기능은 환경에서 자격 증명을 선택합니다. 이 기능을 변경하는 것이 좋습니다.

    cloud-function
    
    

    배포하기 전에 기능으로 작업 할 때는 자격 증명을 사용한 다음 필요에 따라 배포 할 때 자격 증명 부분을 제거하십시오.

    또한 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 초기화를 건너 뛸 수 있습니다.  다음과 같이 firestore 만 사용하십시오 :

    firebase_app
    
    

    Firebase 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 의 차이점에 유의  클라이언트 및 Google 클라우드 firestore  client는 "Capital C"이며 firestore 를 개발 및 테스트하고 수정하려면 시스템에 firestore python 라이브러리를 설치해야합니다.

    requirements.txt

관련 자료

  • 이전 python - 2 차원 텐서를 3 차원 텐서와 연결하는 방법
  • 다음 R에서 ID로 범주 형 주문의 수와 기간을 계산하는 방법