Python Google Cloud Function Соединение сброшено по пиру - PullRequest
0 голосов
/ 01 сентября 2018

Как подробно здесь: https://issuetracker.google.com/issues/113672049

Кросс-пост здесь: https://github.com/GoogleCloudPlatform/google-cloud-python/issues/5879)

Я получаю ошибку сброса соединения при использовании API хранилища Firebase из функции Google Cloud в Python.

Развернутая функция вызывает один blob-get, т.е.

from firebase_admin import storage

def fn(request):
  bucket = 'my-firebase-bucket'
  path = '/thing'
  blob = storage.bucket(bucket).get_blob(path)

сбой прерывистый; функция имеет около 90% успеха.

Скорее всего, произойдет сбой при первом вызове функции после ее развертывания.

1 Ответ

0 голосов
/ 20 февраля 2019

Облачные функции не сохраняют состояние, но могут повторно использовать глобальное состояние из предыдущих вызовов. Это объясняется в подсказках и этих документах .

Использование глобального состояния с повторными попытками должно дать вам более надежную функцию:

from tenacity import retry, stop_after_attempt, wait_random
from firebase_admin import storage

@retry(stop=stop_after_attempt(3), wait=wait_random(min=1, max=2))
def get_bucket(storage):
    return storage.bucket('my-firebase-bucket')

@retry(stop=stop_after_attempt(3), wait=wait_random(min=1, max=2))
def get_blob(bucket, path):
    return bucket.get_blob(path)

bucket = get_bucket(storage)

def fn(request):
  path = '/thing'
  blob = get_blob(bucket, path)
  # etc..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...