Как использовать локальный эмулятор Google Cloud Firestore для python и в целях тестирования - PullRequest
0 голосов
/ 25 февраля 2019

Я попытался выяснить, как использовать локальный эмулятор firestore для python и для целей тестирования.Но я не могу найти документ с инструкциями.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Используя firebase_admin модуль Python, следуйте стандартной настройке, описанной в Cloud Firestore Docs

Это будет включать вызов initialize_app с credentials контекст, а затем создание традиционного клиента Firestore с firestore.client()

Например:

from firebase_admin import credentials, firestore, initialize_app

firebase_credentials_file_path = ...
cred = credentials.Certificate(firebase_credentials_file_path)
initialize_app(cred)
db = firestore.client()

Далее вам необходимо установить и запустить Firestore Emulator ,который будет размещать локальный экземпляр Firestore через localhost:8080.

npx firebase setup:emulators:firestore
npx firebase --token $FIREBASE_TOKEN emulators:start --only firestore --project $PROJECT_KEY

Наконец, внедрить перенаправление в уже созданный экземпляр firestore.client для взаимодействия с локальным хостом / портом эмулятора с использованием небезопасного канала GRPC:

import grpc
from google.cloud.firestore_v1.gapic import firestore_client
from google.cloud.firestore_v1.gapic.transports import firestore_grpc_transport

channel = grpc.insecure_channel("localhost:8080")
transport = firestore_grpc_transport.FirestoreGrpcTransport(channel=channel)
db._firestore_api_internal = firestore_client.FirestoreClient(transport=transport)

Теперь ваш db объект будет взаимодействовать с локальным эмулятором без каких-либо проблем.

Благодарность Джону Картеру для , выясняющему это навнутренний интерфейс gcloud

0 голосов
/ 22 марта 2019

Добро пожаловать в SO:)

Основная цель эмулятора Cloud Firestore (на данный момент), по-видимому, заключается в тестировании правил безопасности, как описано здесь . В этом разделе говорится: "Единственный SDK, который в настоящее время поддерживает эмулятор, - это Node.js SDK."

Смущает, что есть также эти Документы Ruby для клиентских библиотек Google Cloud.Похоже, что то же самое еще не доступно в Python.

Здесь - инструкции по запуску эмулятора в составе Google Cloud SDK.


Подумайте об использовании Cloud Firestore в режиме хранилища данных , который обладает лучшими инструментами (вероятно, у него просто больше времени для созревания).Инструкции по запуску его эмулятора можно найти на странице Запуск эмулятора режима данных .

Используйте страницу Выбор между собственным режимом и режимом хранилища данных , чтобы решить, в каком направлении вы будете двигаться.хочу взять.Если вы чувствуете, что вам нужны дополнительные функции «основного режима», возможно, проще всего будет подключиться напрямую к реальному экземпляру Firestore в облаке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...