【问题标题】:Deleting a Firestore collection with async/await in Python在 Python 中使用 async/await 删除 Firestore 集合
【发布时间】:2021-12-26 07:24:22
【问题描述】:

我正在将 Firebase Admin SDK 与 python 结合使用,并希望删除带有 Async/Await 子句的 Firestore 集合。

official document 表示(非异步/等待)删除应该像这样进行:

def delete_collection(col_ref, batch_size):
    docs = col_ref.limit(batch_size).stream()
    deleted = 0

    for doc in docs:
        print(f'Deleting doc {doc.id} => {doc.to_dict()}')
        doc.reference.delete()
        deleted = deleted + 1


    if deleted >= batch_size:
        return delete_collection(col_ref, batch_size)

但是,这在 Async/Await 版本中效果不佳。如果我把AsyncCollectionReference放在col_ref里面,就会出现这个错误:

TypeError: 'async_generator' object is not iterable

是否可以修复此问题?或者,进行 Async/Await 批量删除是完全错误的想法吗?

谢谢!

【问题讨论】:

    标签: python firebase asynchronous async-await firebase-admin


    【解决方案1】:

    尝试在您的代码中添加 async/await 语句:

    async def delete_collection(coll_ref, batch_size):
        docs = coll_ref.limit(batch_size).stream()
        deleted = 0
    
        async for doc in docs:
            print(f"Deleting doc {doc.id} => {doc.to_dict()}")
            await doc.reference.delete()
            deleted = deleted + 1
    
        if deleted >= batch_size:
            return delete_collection(coll_ref, batch_size)
    

    【讨论】:

      猜你喜欢
      • 2018-08-16
      • 2019-11-11
      • 1970-01-01
      • 2021-06-20
      • 2020-11-29
      • 2020-07-29
      • 2018-12-09
      • 2018-05-05
      • 2016-05-12
      相关资源
      最近更新 更多