ドキュメントIDのリストがあり、それらをFirestoreから削除したい場合、最も効率的な方法は何ですか?私は現在、リスト上でループを使用しています:
document_ids = ["xyz123", "abc0987", "tvu765", ...] # could be up to 30 IDs
for id in document_ids:
database.collection("documents").document(id).delete()
これは、フロントエンドからFlaskルートへのAJAX呼び出しを介して行われます。完了すると、応答が返されますが、IDが20以上の場合、プロセスが完了するまでに数秒かかることがあります。
ここで、これらをこのコレクションから削除すると言う方法はありますか?
おそらくmultiprocessing
、ioバウンド操作を高速化するために使用できます。
import multiprocessing
import time
from google.cloud import firestore
document_ids = ["xyz123", "abc0987", "tvu765", ...] # could be up to 30 IDs
def delete_doc(doc_id):
database = firestore.Client()
database.collection("documents").document(doc_id).delete()
t_start = time.perf_counter()
processes = list()
for id in document_ids:
p = multiprocessing.Process(target=delete_doc, args=[id,])
p.start()
processes.append(p)
for p in processes:
p.join()
t_finish = time.perf_counter()
print("Total Elapsed Time: {} s".format(round(t_finish - t_start, 3)))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加