Как исправить ошибку grpc._channel._MultiThreadedRendezvous; Код Статуса.UNAVAILABLE; Время запроса истеклоPython

Программы на Python
Anonymous
Как исправить ошибку grpc._channel._MultiThreadedRendezvous; Код Статуса.UNAVAILABLE; Время запроса истекло

Сообщение Anonymous »

У меня есть функция Python, которая принимает имя облачной коллекции Firestore в качестве аргумента и выполняет потоковую передачу по каждому документу в этой коллекции на наличие ошибок.
В упрощенной форме это выглядит примерно так:

Код: Выделить всё

from firebase_admin import firestore

def find_all_issues(collection: str) -> None:
fs_client = firestore.client()
coll_ref = fs_client.collection(collection)
doc_snapshot_stream = coll_ref.stream()
for doc_snap in doc_snapshot_stream:
d = doc_snap.to_dict()
# perform error checks on d
Ключевым моментом здесь является то, что я создаю поток для коллекции и использую его для чтения и обработки каждого документа в коллекции.
Код всегда работает идеально во всех моих коллекциях, кроме одной.
К сожалению, в самой большой коллекции я нередко получаю такую ​​ошибку:

Код: Выделить всё

grpc._channel._MultiThreadedRendezvous: 
Это очень расстраивает. Я не могу поверить, что Firestore не может создавать и поддерживать надежную базу данных!
В сообщении об ошибке содержится очень полезный совет:

Код: Выделить всё

Please try either limiting the entities scanned, or run with an updated index configuration.
Проблема в том, что я понятия не имею, как это выполнить:
  • Код: Выделить всё

    limiting the entities scanned
    : как я могу это сделать? Мне нужно обработать каждый документ в коллекции! Кроме того, я очень надеюсь, что Google не ожидает, что пользователи Firestore каким-то образом будут вручную разбивать большие операции чтения.
  • Код: Выделить всё

    run with an updated index
    : Я понятия не имею, какой индекс использовать для решения этой проблемы. В других контекстах Firestore я видел сообщение об ошибке Google, которое очень полезно давало вам точную команду индекса, которую вы должны выполнить, чтобы решить проблему. К сожалению, здесь Google ничего мне не говорит.
Я поискал в Интернете, прежде чем публиковать здесь сообщение, и был разочарован, обнаружив очень мало обсуждений этой проблемы. Но я думаю, что этот недавний пост может быть связан. Служба поддержки Google сообщает, что «бэкэнд-инженеры исследовали и обнаружили потенциальную ошибку в планировщике запросов».

Вернуться в «Python»