IDを999999999未満にしたいのですが、逆の効果があるようにプログラムしようとすると、IDが大きくなるだけで、IDを割り当てようとするとstart> end?
start, end = User.allocate_ids(max=999999999)
logging.info('start %d' % start)
logging.info('end %d' % end)
lower = start if start < end else end
key = User(id=lower).put()
logging.info('key: '+str(key))
user = key.get()
user.add_auth_id(email)
私のログ出力は、割り当てられるIDが間違っていることを示しています:
2012-02-13 03:19:07.396 start 98765439124
I 2012-02-13 03:19:07.396 end 98765439123
どうすればこれを修正できますか?
アップデート
私が使用する汚い回避策は、私がすべきではない独自のIDシステムを作成することですが、この場合の唯一の解決策であり、これによって競合や重複が発生することはないと思います。エンティティがいっぱいになり始めると遅くなる可能性がありますしかし、今のところ、これはユーザーに対して許容できる解決策のように見えますが、コードを見るとそれほど見栄えがよくないかもしれません。
new_id = random.randint(1,999999999)
logging.info('testing new id: %d' % new_id)
while User.get_by_id(new_id) != None:
new_id = random.randint(1,999999999)
logging.info('creating new id: %d' % new_id)
key = User(id=new_id).put()