首页 > 解决方案 > google.api_core.exceptions.ServiceUnavailable: 503 数据存储操作超时,或者使用流时数据暂时不可用

问题描述

我正在尝试遍历 Firestore 中的所有文档。我在 Python 中运行以下命令

from google.cloud.firestore import Client

client = Client()

docs = list()
for es in client.collection('exchange-statements').stream():
    docs.append(es)

但它会产生以下错误

google.api_core.exceptions.ServiceUnavailable: 503 The datastore operation timed out, or the data was temporarily unavailable.

我正在使用google-cloud-firestore v1.2.0.

编辑

由于我的问题是关于流式文档而不仅仅是计数,因此它与此处找到的解决方案不同。

标签: pythongoogle-cloud-firestore

解决方案


此处答案的启发,我想出了一个通用的解决方案。但是我想知道是否没有更好的开箱即用解决方案。

def iterate(collection_name, batch_size=5000, cursor=None):
    query = client.collection(collection_name).limit(batch_size).order_by('__name__')
    if cursor:
        query = query.start_after(cursor)

    for doc in query.stream():
        yield doc
    
    if 'doc' in locals():
        yield from iterate(collection_name, batch_size, doc)

推荐阅读