Используя 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