#python #firebase #google-cloud-platform #google-cloud-firestore #gcloud
#python #firebase #google-облачная платформа #google-облако-firestore #gcloud
Вопрос:
В чем разница между запуском эмулятора firestore через:
firebase emulators:start --only firestore
и:
gcloud beta emulators firestore start
Оба варианта позволяют моему приложению Python обеспечивать связь с базой данных следующим образом:
import google
from google.cloud import firestore
os.environ["FIRESTORE_EMULATOR_HOST"] = "localhost:8081"
os.environ["FIRESTORE_EMULATOR_HOST_PATH"] = "localhost:8081/firestore"
os.environ["FIRESTORE_HOST"] = "http://localhost:8081"
credentials = mock.Mock(spec=google.auth.credentials.Credentials)
client = firestore.Client(credentials=credentials)
Одно из отличий, которое я заметил сам, заключается в том, что firebase
, похоже, уважает мой firebase.json
, в частности порт хоста, указанный следующим образом:
{
"emulators": {
"firestore": {
"port": "8081"
}
}
}
С другой стороны, gcloud
игнорирует firebase.json
и вместо этого выбирает случайный порт, если я явно не передаю порт через --host-port
. Является ли это частью большей разницы между ними и каковы некоторые другие различия?
Ответ №1:
Я просматривал документацию для обоих инструментов, и они делают почти одно и то же.
Используя инструмент Firebase, вы можете запускать эмуляторы для нескольких продуктов Firebase, тогда как команда gcloud позволяет запускать эмуляторы GCP. Firestore — это просто продукт, который у них обоих общий, и поэтому их утилита должна быть одинаковой или похожей.
Что касается функциональных различий, firebase
предоставляет флаги --import
и --export-on-exit
, которые позволяют сохранять и восстанавливать данные между эмулируемыми сеансами. Это также предоставляет способ визуализировать, как правила безопасности обрабатывают текущие запросы.
Помимо этих функций я бы отметил различные способы настройки порта и файла правил:
firebase emulators
используетfirebase.json
файл.gcloud beta emulators
использует флаги--host-port
и--rules
для достижения той же функциональности.
Обратите внимание, что эмулятор Firestore на GCP находится на стадии бета-тестирования, поэтому его официальная поддержка может быть ограниченной, и в него могут вноситься изменения. Также обратите внимание, что в документации Firestore от GCP вместо gcloud используется Firebase CLI.
В конце концов, вы должны использовать предпочитаемый вами инструмент, поскольку они оба работают для достижения одной и той же цели — эмуляции Firestore. Если вы уже работаете с Firebase CLI, я бы рекомендовал вам продолжать использовать его; если вы работаете с gcloud
, используйте это.