Python用のbotoを使用して更新および読み取りを行うSimpleDBインスタンスがあります。
sdb = boto.connect_sdb(access_key, secret_key)
domain = sdb.get_domain('DomainName')
itemName = 'UserID'
itemAttr = {'key1': 'val1', 'key2': val2}
userDom.put_attributes(itemName, itemAttr)
それは期待どおりに機能します。名前が「UserID」で値がval1とval2の新しいアイテムがドメインに挿入されます。
今、私が直面している問題は、属性を更新した直後にそのドメインを照会すると、
query = 'select * from `DomainName` where key1=val1'
check = domain.select(query)
itemName = check.next()['key2']
行の値が見つからなかったため、エラーが発生します。ただし、書き込みと読み取りの間にtime.sleep(1)を追加すると、すべてが機能します。
この問題は、put_atributesがデータベースに書き込みを通知するという事実が原因であると思われますが、この変更が永続化されるまで待機しません。また、アイテムを作成してからそのアイテム(item.save())を保存して書き込もうとしましたが、あまり成功しませんでした。次の操作に進む前に、SimpleDBインスタンスに値が書き込まれていることを確認する方法を知っている人はいますか?
ありがとう。