База данных Firestore читает / пишет невероятно медленно - PullRequest
0 голосов
/ 10 января 2020

ОС: Ma c ОС Catalina v 10.15.1

Python версия: Python 3.7.1

Версия пакета pips для Firestore: google-cloud-firestore 1.6. 1

Я тестирую простые операции чтения и записи в базу данных на очень простой базе данных Firestore. Я смотрю на одну коллекцию с одним документом, содержащим 1 элемент данных (строку); однако, когда я пытаюсь записать (как показано ниже), таймер, который у меня есть (также в приведенном ниже коде), показывает, что первая запись занимает в течение 30 секунд . Такое же поведение присутствует для операций чтения.

Однако это присутствует только для первой записи / чтения в этом сценарии python. Все последующие операции записи / чтения рассчитаны примерно на 100 мс (но все же медленно для такой крошечной базы). Мне не удалось найти эту проблему, реплицированную на inte rnet, и в документации Firestore Python SDK нет упоминаний о подобном поведении. Я запускаю приведенный ниже код локально на моей машине.

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import datetime

cred = credentials.Certificate("./path/to/adminsdk.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

start = datetime.datetime.now()

#the below write takes >30 seconds to execute
doc_ref = db.collection(u'test_collection').document(u'test_document')
doc_ref.set({u'test_field':'data'})

time_after_first = datetime.datetime.now()
print(time_after_first - start)

#The below read takes 80 ms to execute
doc_data = doc_ref.get()
print(doc_data.get('test_field'))

print(datetime.datetime.now()-time_after_first)

print("done")

Я нашел предложение в другом посте StackOverflow, предлагающее использовать on_snapshot вместо get; однако проблема сохраняется (DocumentSnapshot получается только примерно через 30 секунд). Кроме того, проблема не уникальна для get, но для set, update и др. c. а также.

Любые советы будут оценены!

1 Ответ

1 голос
/ 10 января 2020

Вы должны думать о производительности вашего соединения. Я реализовал этот код на моей стороне, и здесь есть эффекты. Это никогда не достигало 0,5 с. Кажется, производительность Firestore очень хорошая. Я надеюсь, что это поможет вам решить ...

enter image description here

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