firebase-admin-pythonでのトランザクションによるFirestoreの更新
3269 ワード
コレクションからドキュメントを更新順に取り出したいが並列実行しても重複しないようにしたい。というシナリオとする
要点
-
@firestore.transactional
デコレータで包んだ範囲がトランザクション境界になる -
firestore.client().transaction()
オブジェクトにget/setを指示する
サンプル
from firebase_admin import firestore
def dequeue(size):
db = firestore.client()
@firestore.transactional
def get_and_update(transaction):
docs = db.collection('queue').order_by('updated_at').limit(size).get(transaction=transaction)
ids = []
for doc in docs:
transaction.update(doc.reference, {'updated_at': firestore.SERVER_TIMESTAMP})
ids.append(doc.id)
return ids
ids = get_and_update(db.transaction())
return ids
Author And Source
この問題について(firebase-admin-pythonでのトランザクションによるFirestoreの更新), 我々は、より多くの情報をここで見つけました https://zenn.dev/laiso/articles/47fa3fc2e43179著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol